• 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/code-1/

 

Challenge 10

 

webhacking.kr

 

 

 

[문제풀이]

문제에 접속하면 위와 같이

O와 Goal이 있는 것을 볼 수 있다. 

문제가 어떻게 작동하는지 자세히 분석하기 위해

Ctrl+U 단축키를 통해 source code를 확인해 봤다.

 

 

<html>
<head>
<title>Challenge 10</title>
</head>

<body>
<hr style=height:100;background:brown;>
<table border=0 width=1800 style=background:gray>
<tr><td>
<!-- 클릭 가능한 링크를 생성하며 id는 "hackme"로 지정되고 초기 위치는 좌표값(left, top) 0,0으로 설정된다. 해당 링크를 클릭시 좌표값이 1px씩 증가하며 좌표가 "1600px"이 되면 '?go=1600px' 페이지로 이동된다. 마우스를 링크 위에 올리면 'yOu'가 표시되고, 그렇지 않으면 'O'만 화면에 표시된다. -->
<a id=hackme style="position:relative;left:0;top:0" onclick="this.style.left=parseInt(this.style.left,10)+1+'px';if(this.style.left=='1600px')this.href='?go='+this.style.left" onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>
<!-- 금색으로 표시된 글자들을 생성하며 오른쪽 끝에 배치되도록 한다. -->
<font style="position:relative;left:1600;top:0" color=gold>|<br>|<br>|<br>|<br>Goal</font>
</td></tr>
</table>
<hr style=height:100;background:brown;>
</body>
</html>

클릭 가능한 링크가 생성되고 

링크의 모양은 마우스가 올려졌을 때

'yOu', 그렇지 않을 때 'O' 모양이다.

링크를 클릭 시 1px만큼 이동하며

1600px가 됐을 때 목표지점으로 이동하며

문제가 해결되는 것 같다.

 

즉 링크를 1599번 클릭해서 Goal에 도착하는 방법과

클라이언트단에서의 source code를 조작하여

한번 클릭 시 1599px 만큼 이동시켜

Goal에 도착하게 하는 방법이 존재하는 것 같다. 

1번째 방법은 힘들게 수작업을 해야 하니

2번째 방법을 사용했다.

 

 

개발자 도구의 요소 탭에서

클릭했을 때 1599px가 움직이도록 설정했다.

(현재 위치 1px도 포함했기에)

 

 

'O' 모양의 링크를 클릭하니

링크의 좌표가 1600px가 되며

문제가 해결되었다.

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-26  (0) 2024.04.13
[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-17  (0) 2023.09.17
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/web-11/

 

Challenge 26

 

webhacking.kr

 

 

 

[문제풀이]

문제에 접속하면 view-source라는 하이퍼링크가 있어서

source code를 확인했다.

 

 

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 26</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }    
a { color:lightgreen; }
</style>
</head>
<body>
<?php
// 만약 id에 "admin"이라는 문자열이 포함되어 있다면 "no!"를 출력하고 스크립트를 종료한다.
  if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
// 그렇지 않으면, id를 URL 디코딩한다.
  $_GET['id'] = urldecode($_GET['id']);
// 만약 id가 "admin"과 정확히 일치한다면 solve(26) 함수를 호출한다.
  if($_GET['id'] == "admin"){
    solve(26);
  }
?>
<br><br>
<a href=?view_source=1>view-source</a>
</body>
</html>

사용자로부터 'id'라는 GET 매개변수를 받아와

id에 'admin'이라는 문자열이 포함되어 있으면

"no"를 출력하고 종료된다.

그렇지 않은 경우에는 'id'를 url 디코딩하고

"admin" 문자열과 비교하여 일치하면

solve(26) 함수를 호출하며

문제가 풀리는 구조이다.

 

즉 "admin"이라는 문자열을 url 인코딩해서 'id' 값으로 집어넣으면

url 디코딩 되며 "admin"과 일치하여 문제가 해결될 것이다. 

 

 

url 인코딩 표를 참조해서

"admin"이라는 문자열을 다음과 같이 인코딩했다.

"%61%64%6d%69%6e"

 

 

url 인코딩한 값을 id에 넣어 전송했지만

"no!"라고 화면에 표시된다.

 

 

"%61%64%6d%69%6e" 이 문자열이

처음부터 "admin"으로 인식되는 것이니

다음과 같이 한 번 더 인코딩을 해서 id 값에 집어넣었다.

"%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65"

문제가 해결되었다.

 

 

 

 

Reference:

https://www.eso.org/~ndelmott/url_encode.html

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-10  (0) 2024.04.13
[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-17  (0) 2023.09.17
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/web-06/

 

https://webhacking.kr/challenge/web-06/

 

webhacking.kr

 

 

 

[문제풀이]

문제 페이지에 접속하면

기본으로 설정된 ID, PW와 view-source 하이퍼링크를 볼 수 있다.

 

 

<?php
include "../../config.php";
if($_GET['view_source']) view_source();

// 만약 사용자 쿠키가 설정되지 않았다면, id와 pw가 default 값으로 설정된다.
if(!$_COOKIE['user']){
  $val_id="guest";
  $val_pw="123qwe";
  
  // id와 pw를 20번씩 base64로 인코딩한다.
  for($i=0;$i<20;$i++){
    $val_id=base64_encode($val_id);
    $val_pw=base64_encode($val_pw);
  }
  
  // 숫자를 특정 문자로 대체한다.
  $val_id=str_replace("1","!",$val_id);
  $val_id=str_replace("2","@",$val_id);
  $val_id=str_replace("3","$",$val_id);
  $val_id=str_replace("4","^",$val_id);
  $val_id=str_replace("5","&",$val_id);
  $val_id=str_replace("6","*",$val_id);
  $val_id=str_replace("7","(",$val_id);
  $val_id=str_replace("8",")",$val_id);

  $val_pw=str_replace("1","!",$val_pw);
  $val_pw=str_replace("2","@",$val_pw);
  $val_pw=str_replace("3","$",$val_pw);
  $val_pw=str_replace("4","^",$val_pw);
  $val_pw=str_replace("5","&",$val_pw);
  $val_pw=str_replace("6","*",$val_pw);
  $val_pw=str_replace("7","(",$val_pw);
  $val_pw=str_replace("8",")",$val_pw);

// 사용자의 쿠키를 설정한다.
  Setcookie("user",$val_id,time()+86400,"/challenge/web-06/");
  Setcookie("password",$val_pw,time()+86400,"/challenge/web-06/");
  echo("<meta http-equiv=refresh content=0>");
  exit;
}
?>
<html>
<head>
<title>Challenge 6</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>

<?php
// 쿠키로부터 id와 pw를 디코딩한다.
$decode_id=$_COOKIE['user'];
$decode_pw=$_COOKIE['password'];

// 특정 문자를 다시 원래 문자로 변환한다.
$decode_id=str_replace("!","1",$decode_id);
$decode_id=str_replace("@","2",$decode_id);
$decode_id=str_replace("$","3",$decode_id);
$decode_id=str_replace("^","4",$decode_id);
$decode_id=str_replace("&","5",$decode_id);
$decode_id=str_replace("*","6",$decode_id);
$decode_id=str_replace("(","7",$decode_id);
$decode_id=str_replace(")","8",$decode_id);

$decode_pw=str_replace("!","1",$decode_pw);
$decode_pw=str_replace("@","2",$decode_pw);
$decode_pw=str_replace("$","3",$decode_pw);
$decode_pw=str_replace("^","4",$decode_pw);
$decode_pw=str_replace("&","5",$decode_pw);
$decode_pw=str_replace("*","6",$decode_pw);
$decode_pw=str_replace("(","7",$decode_pw);
$decode_pw=str_replace(")","8",$decode_pw);

// id와 pw를 base64로 20번 디코딩한다.
for($i=0;$i<20;$i++){
  $decode_id=base64_decode($decode_id);
  $decode_pw=base64_decode($decode_pw);
}

// 사용자의 id와 pw를 화면에 출력한다.
echo("<hr><a href=./?view_source=1 style=color:yellow;>view-source</a><br><br>");
echo("ID : $decode_id<br>PW : $decode_pw<hr>");

// 디코딩된 id와 pw가 "admin", "nimda"와 일치한다면 solve(6) 함수를 호출한다.
if($decode_id=="admin" && $decode_pw=="nimda"){
  solve(6);
}
?>
</body>
</html>

view-source 하이퍼링크를 클릭해서 code를 확인했다.

 

코드를 해석해 보면 

사용자 쿠키가 설정되지 않았기에

id와 pw가 "guest", "123qwe"으로 설정되고

20번 base64 인코딩 및 특정 문자로 치환하는 과정을 거쳐서 

쿠키값으로 들어오게 된다.

그리고 다시 반대로 쿠키값을 숫자로 치환하고

20번 디코딩하는 과정을 거쳐

문제 페이지에 이를("guest", "123qwe") 출력하고 있음을 알 수 있다.

마지막에는 id와 pw의 값이 "admin", "nimda"와 일치하는지 확인하여

일치한다면 solve(6) 함수를 호출해 문제가 해결되는 것처럼 보인다. 

 

즉 문제를 해결하기 위해서는 id와 pw의 값에 "admin", "nimda"가 들어가면 될 것 같다.

이를 20번 인코딩, 치환 과정을 거쳐서 쿠키에 집어넣어 보자

 

 

// admin 인코딩 및 치환
var a = 'admin';
for (var i = 0; i < 20; i++) {
    a = btoa(a);
}
a = a.replaceAll('1', '!');
a = a.replaceAll('2', '@');
a = a.replaceAll('3', '$');
a = a.replaceAll('4', '^');
a = a.replaceAll('5', '&');
a = a.replaceAll('6', '*');
a = a.replaceAll('7', '(');
a = a.replaceAll('8', ')');
// nimda 인코딩 및 치환
var a = 'nimda';
for (var i = 0; i < 20; i++) {
    a = btoa(a);
}
a = a.replaceAll('1', '!');
a = a.replaceAll('2', '@');
a = a.replaceAll('3', '$');
a = a.replaceAll('4', '^');
a = a.replaceAll('5', '&');
a = a.replaceAll('6', '*');
a = a.replaceAll('7', '(');
a = a.replaceAll('8', ')');

id와 pw의 값을 온라인 base64 도구를 이용해

20번 수작업으로 인코딩하고 값을 치환할 수 있겠지만

힘든 작업이기에 이 과정을 수행하여 출력하는 javascript 코드를 짜보았다. 

 

 

개발자 도구의 콘솔창에서

javascript 코드를 실행하여

결과 값이 출력되었다.

 

 

해당 값을 개발자 도구의

쿠키 설정 부분에 입력했다.

 

 

그리고 문제 페이지를 새로고침 했더니

문제가 해결되었다.

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-10  (0) 2024.04.13
[Webhacking.kr] old-26  (0) 2024.04.13
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-17  (0) 2023.09.17
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/js-3/

 

Challenge 16

 

webhacking.kr

 

 

 

[문제풀이]

1. 문제에 접속하면 다음과 같은 이미지가 들어있다.

 

 

2. Ctrl+U를 통해 소스 코드를 확인해 봤다.

<html>
<head>
<title>Challenge 16</title>
# 배경색을 검정으로 하고, 이벤트 핸들러 onload가 실행될때 kk함수를 호출하고, 이벤트 핸들러 onkeypress가 실행될때 mv함수를 호출한다.
<body bgcolor=black onload=kk(1,1) onkeypress=mv(event.keyCode)>
<font color=silver id=c></font>
<font color=yellow size=100 style=position:relative id=star>*</font>
<script> 
document.body.innerHTML+="<font color=yellow id=aa style=position:relative;left:0;top:0>*</font>";
function mv(cd){
  kk(star.style.left-50,star.style.top-50);
# 100에 해당하는 키를 입력했을시 "*"이 오른쪽으로 50px 이동한다.
  if(cd==100) star.style.left=parseInt(star.style.left+0,10)+50+"px"; 
# 97에 해당하는 키를 입력했을시 "*"이 왼쪽으로 50px 이동한다.
  if(cd==97) star.style.left=parseInt(star.style.left+0,10)-50+"px";
# 119에 해당하는 키를 입력했을시 "*"이 위쪽으로 50px 이동한다.  
  if(cd==119) star.style.top=parseInt(star.style.top+0,10)-50+"px";
# 115에 해당하는 키를 입력했을시 아래로 "*"이 50px 이동한다.  
  if(cd==115) star.style.top=parseInt(star.style.top+0,10)+50+"px";
# 124에 해당하는 키를 입력했을시 .php 경로로 이동한다.
  if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!
}
# "*" 모양의 특성을 정의하는 것이다. 색상이 무작위로 설정, 생성되는 위치 설정, 이벤트 핸들러 onmouseover이 실행되면서 생성된 "*"의 내용을 비운다.
function kk(x,y){
  rndc=Math.floor(Math.random()*9000000);
  document.body.innerHTML+="<font color=#"+rndc+" id=aa style=position:relative;left:"+x+";top:"+y+" onmouseover=this.innerHTML=''>*</font>";
}
</script>
</body>
</html>

124에 해당하는 키를 입력하면 .php 경로로 이동하면서 문제가 풀릴 것으로 예측된다.

 

 

3. 먼저 숫자에 해당하는 키가 있어야 하니 아스키 코드를 생각해 봤다. 

100 d
97 a
119 w
115 s
124 |

즉 124에 해당하는 "|" 키를 입력하면 문제가 풀릴 것이다.

 

입력하니 .php 경로로 이동하면서 문제가 해결되었다.

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-26  (0) 2024.04.13
[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-17  (0) 2023.09.17
[Webhacking.kr] old-03  (0) 2023.09.15
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/js-2/

 

Challenge 15

 

webhacking.kr

 

 

 

[문제풀이]

1.  문제에 접속하면 다음과 같은 페이지가 나온다.

OK를 클릭하면 웹사이트의 홈으로 돌아간다.

 

 

2. Ctrl+U를 통해 소스 코드를 확인해 봤다.

<html>
<head>
<title>Challenge 15</title>
</head>
<body>
<script>
  alert("Access_Denied");
# "Access_Denied"라는 경고창을 띄움
  location.href='/';
# 웹사이트의 루트 경로로 이동한다. 즉 현재 페이지를 닫지 않는한 해당 페이지는 루트 경로로 이동
  document.write("<a href=?getFlag>[Get Flag]</a>");
# 현재 페이지의 URL 뒤에 '?getFlag' 파라미터를 추가 
</script>
</body>

현재 페이지의 URL 뒤에 "?getFlag"를 넣으면 Flag를 얻으면서 문제가 해결될 것이다.

 

 

3. 현재 페이지의 링크 뒤에 "?getFlag"를 넣었다.

 

엔터를 쳤더니 문제가 풀렸다.

 

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-17  (0) 2023.09.17
[Webhacking.kr] old-03  (0) 2023.09.15
[Webhacking.kr] old-01  (0) 2023.09.15
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/js-4/

 

Challenge 17

 

webhacking.kr

 

 

 

[문제풀이]

1. 문제에 접속하면 입력하여 제출가능한 form이 하나 존재한다.

 

 

2. Ctrl+U를 통해 소스 코드를 확인해 봤다.

<html>
<head>
<title>Challenge 17</title>
</head>
<body bgcolor=black>
<font color=red size=10></font>
<p>
<form name=login>
# 입력 가능한 form 생성
<input type=passwd name=pw><input type=button onclick=sub() value="check">
# form 안에 비밀번호를 입력받는 "pw" 입력 필드와 클릭 가능한 check 버튼 생성
</form>
<script>
unlock=100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+1/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10-100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+9999999;
# 수식의 결과가 "unlock"에 저장
function sub(){ if(login.pw.value==unlock){ location.href="?"+unlock/10; } else{ alert("Wrong"); } }
# check 버튼 클릭 시에 실행되는 함수로 입력한 "pw"값이 "unlock"값과 일치하면 다른 URL로 이동하고 그렇지 않을 경우 Wrong이라는 경고창을 띄운다. 
</script>

"unlock" 값이 "pw"값과 일치해야 문제가 풀릴 것이다. 따라서 "unlock"값을 구해볼 것이다.

 

 

3. 계산식을 복사해서 개발자 도구의 콘솔창에서 실행시켜 결과 값을 출력해 봤다.

 

출력된 결과인 "7809297.1"을 "pw" 입력창에 넣고 check 버튼을 클릭했더니 문제가 풀렸다.

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-03  (0) 2023.09.15
[Webhacking.kr] old-01  (0) 2023.09.15
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/web-03/

 

Challenge 3

 

webhacking.kr


 

 

 

[문제풀이]

1. 첫 페이지에 Nonogram 이 있어서 간단하게 해결했다.

 

 

2.  두 번째 페이지는 다음과 같이 입력하고 제출할 수 있는 환경으로 구성되어 있다.

 

이것만으로는 정보가 부족하여 Ctrl+U를 통해 소스 코드를 확인해 봤다.

<html>
<head>
<title>Challenge 3</title>
</head>
<body>
<center>Nonogram</center>
<p>
<hr>

<form name=kk method=get action=index.php>
</form>
<form method=post action=index.php>
<input type=hidden name=answer value=1010100000011100101011111>
# 사용자에게 표시되지 않는 숨겨진 입력 필드를 생성, 입력 필드의 이름을 answer로 설정, answer의 기본값을 "1010100000011100101011111"로 설정
Clear!<br>enter your name for log : 
# 텍스트 표시
<input type=text name=id maxlength=10 size=10>
# 텍스트 입력 필드 생성, 입력 필드의 이름을 "id"로 설정, 입력 가능한 최대 문자 수를 10으로 제한, 입력 필드의 사이즈를 10으로 설정
<input type=submit value='submit'>
# 제출 버튼 생성, 버튼의 텍스트를 "submit"으로 설정

입력 필드가 가시적인 필드와 비가시적인 필드로 구분된 것을 알 수 있다.

 

 

3. 사용자에게 보이는 입력 필드 "id"에 SQL Injection을 시도해 봤다.

 

시도한 결과는 다음과 같다.

가시적인 입력 필드 "id"에 집어넣은 값이 그대로 출력되고, 비가시적인 입력 필드 "answer"의 기본 값도 그대로 넘어간 것을 확인할 수 있다.

 

 

4. 그러면 Burp Suite로 비가시적인 입력 필드 "answer"의 값에다 SQL Injection을 시도해 보겠다.

 

Forward 하자마자 문제가 해결되었다.

 

 

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-17  (0) 2023.09.17
[Webhacking.kr] old-01  (0) 2023.09.15
  • 문제경로
  • 문제풀이

 

 

 

[문제경로]

https://webhacking.kr/challenge/web-01/

 

Challenge 1

 

webhacking.kr


 

 

 

[문제풀이]

1. view-source를 통해 소스 코드를 확인해 봤다.

<?php
  include "../../config.php";
  if($_GET['view-source'] == 1){ view_source(); }
  if(!$_COOKIE['user_lv']){
    SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
    echo("<meta http-equiv=refresh content=0>");
  }
?>
<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<?php
  if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
# "user_lv" 쿠키의 값이 숫자가 아닌 경우 1로 설정  
  if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;
# "user_lv" 쿠키의 값이 4 이상인 경우, 값을 1로 설정  
  if($_COOKIE['user_lv']>3) solve(1);              
# "user_lv" 쿠키의 값이 3보다 큰 경우, solve(1) 함수를 호출  
  echo "<br>level : {$_COOKIE['user_lv']}";
?>
<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>

solve(1)을 호출하게 되면 문제가 풀릴 것이다.

solve(1)을 호출하려면 "user_lv" 쿠키 값이 3보다 크고 4보다는 작은 수여야 한다.

그러면 소수점이 들어가야 될 것이다. 

 

 

2. "user_lv" 쿠키 값에 3.1을 집어넣어 보도록 하겠다.

 

그리고 새로고침 했더니 solve(1) 함수를 호출하면서 문제가 해결된 것을 확인할 수 있다.

'Wargame & CTF > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-06  (0) 2024.04.10
[Webhacking.kr] old-16  (0) 2023.09.22
[Webhacking.kr] old-15  (0) 2023.09.17
[Webhacking.kr] old-17  (0) 2023.09.17
[Webhacking.kr] old-03  (0) 2023.09.15

+ Recent posts