본문 바로가기
CTF, 워게임 문제 풀이/webhacking.kr

webhacking.kr 33번 문제

by secumark 2022. 9. 13.
728x90

 

아직 시작도 안했는데 Wrong ㅠ

 

<hr>
Challenge 33-1<br>
<a href=index.txt>view-source</a>
<hr>
<?php
if($_GET['get']=="hehe") echo "<a href=???>Next</a>";
else echo("Wrong");
?>

소스코드는 이게 전부다.

url은 /bonus-6/index.txt 이렇게 index.txt로 되어 있다.

첫번째 화면에는 딱히 별말 없음.

get이 hehe를 받으면 Next가 나오나봄.

 

umm

 

이렇게 get=hehe를 적어서 보냈다.

 

 

Next라는 버튼이 생겼다!

 

<hr>
Challenge 33-2<br>
<a href=lv2.txt>view-source</a>
<hr>
<?php
if($_POST['post']=="hehe" && $_POST['post2']=="hehe2") echo "<a href=???>Next</a>";
else echo "Wrong";
?>

 

새로운 소스코드는 post에 값을 보내라고 적혀있다.

burp suite을 실행해서

 

맨 위에 get으로 되어 있던걸 post로 바꿔주고

아래에 post, post2를 보내줬는데 해결이 안돼서;; 

 

마우스 오른쪽 클릭 -> Change request method 해준 후에 post=hehe&post2=hehe2해줬다.

 

 

또 NEXT가 떴다.

 

33-3 ;;

 

<hr>
Challenge 33-3<br>
<a href=33.txt>view-source</a>
<hr>
<?php
if($_GET['myip'] == $_SERVER['REMOTE_ADDR']) echo "<a href=???>Next</a>";
else echo "Wrong";
?>

 

이번엔 myip 변수에 아이피 주소를 넣어야 하나보다.

 

REMOTE_ADDR은 내 IP 주소 입력하면 된다.

 

 

33-4가 나왔다;;

hint는 1663051047

<hr>
Challenge 33-4<br>
<a href=l4.txt>view-source</a>
<hr>
<?php
if($_GET['password'] == md5(time())) echo "<a href=???>Next</a>";
else echo "hint : ".time();
?>

 

소스 코드는 다음과 같다. password 변수가 md5(time() 이면 Next를 보여준다.

보니까 hint에 있는 저 숫자는 time()을 알려주는듯하다!

 

시간을 맞춰서.. 제대로 보내는게 관건이다.

 

1초마다 1이 늘어나서 미리 15초 정도 뒤의 시간을 MD5 암호화해 놓은뒤 계속 새로고침해줬다.

 

 

<hr>
Challenge 33-5<br>
<a href=md555.txt>view-source</a>
<hr>
<?php
if($_GET['imget'] && $_POST['impost'] && $_COOKIE['imcookie']) echo "<a href=???>Next</a>";
else echo "Wrong";
?>

 

33-5..

imget을 get으로, impost는 post로, imcookie는 cookie로 보내야한다.

음.. 근데 값이 안써져 있어서 그냥 1로 보내봤다.

cookie 값은 원래 있던 쿠키 다음에 ; imcookie=1

 

 

<hr>
Challenge 33-6<br>
<a href=gpcc.txt>view-source</a>
<hr>
<?php
if($_COOKIE['test'] == md5($_SERVER['REMOTE_ADDR']) && $_POST['kk'] == md5($_SERVER['HTTP_USER_AGENT'])) echo "<a href=???>Next</a>";
else echo "hint : {$_SERVER['HTTP_USER_AGENT']}";
?>

33-6

test라는 쿠키값에 내 ip 주소를 md5 암호화한 값이 들어가야 하고, kk라는 post method에는 http_useragent의 md5 값이 들어가야 한단다;;

 

ip주소 암호화 및, hint에 적혀있는 http_useragent를 암호화해 post로 보내주었다.

 

 

<hr>
Challenge 33-7<br>
<a href=wtff.txt>view-source</a>
<hr>
<?php
$_SERVER['REMOTE_ADDR'] = str_replace(".","",$_SERVER['REMOTE_ADDR']);
if($_GET[$_SERVER['REMOTE_ADDR']] == $_SERVER['REMOTE_ADDR']) echo "<a href=???>Next</a>";
else echo "Wrong<br>".$_GET[$_SERVER['REMOTE_ADDR']];
?>

 

^^;; 왜 네버엔딩인건지

 

REMOTE_ADDR에 있는 .을 공백으로 대체하는 것으로 보인다.

그리고 GET 메소드로 REMOTE_ADDR이 .. 같으면? Next를 보여주는듯

근데 이건 문제가 좀 애매해서; 그냥 .만 빼고 1101121111=1101121111 이렇게 하면 된다.

 

 

<hr>
Challenge 33-8<br>
<a href=ipt.txt>view-source</a>
<hr>
<?php
extract($_GET);
if(!$_GET['addr']) $addr = $_SERVER['REMOTE_ADDR'];
if($addr == "127.0.0.1") echo "<a href=???>Next</a>";
else echo "Wrong";
?>

33-8

addr=ip주소일때..

이게 127.0.0.1이면 된다는..

 

 

<hr>
Challenge 33-9<br>
<a href=nextt.txt>view-source</a>
<hr>
<?php
for($i=97;$i<=122;$i=$i+2){
  $answer.=chr($i);
}
if($_GET['ans'] == $answer) echo "<a href=???.php>Next</a>";
else echo "Wrong";
?>

33-9

for문 해석

i=97이고, i+2씩 더해서 122가 될때까지

$answer.=chr($i);

ans 변수가 $answer와 같이 같으면 Next

chr은 참고로 문자 리턴을 의미.

97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121

총 13개 문자다.

이걸 다 더해야하나보다.

참고로 chr(97)이 a다.

acegikmoqsuwy

요로코롬

 

 

<hr>
Challenge 33-10<br>
<a href=forfor.txt>view-source</a>
<hr>
<?php
$ip = $_SERVER['REMOTE_ADDR'];
for($i=0;$i<=strlen($ip);$i++) $ip=str_replace($i,ord($i),$ip);
$ip=str_replace(".","",$ip);
$ip=substr($ip,0,10);
$answer = $ip*2;
$answer = $ip/2;
$answer = str_replace(".","",$answer);
$f=fopen("answerip/{$answer}_{$ip}.php","w");
fwrite($f,"<?php include \"../../../config.php\"; solve(33); unlink(__FILE__); ?>");
fclose($f);
?>

33-10 문제^^..

일단 ip 변수에 내 ip가 저장되어 있고,

i라는 변수가 0부터 strlen, 내 아이피 주소 길이만큼 될때까지, 총 14개문자인데, 0부터 시작하니까 15개가 되겠다.

ip에 ord(0), ord(1), ord(2)~ ord(14)까지 한값을 저장한다. 

그리고 . 부분은 공백으로 만듦.

substr은 지정된 위치에서 특정 길이만큼 문자열을 자르는 건데, 0부터 10까지 잘라낸다는 뜻이다. (ip 주소)

그리고 answer=ip*2, answer=ip/2를 해주고,,

이때 또 .은 공백으로 치환해주고..

fopen에 answerip/{$answer}_{$ip}.php 값을 넣어주면...? 이때 w는 편집, 쓰기.. 이런말

 

일단 ord(0)은 48이다. 그리고 49, 50, 51, 52 1씩 더해진 값이 나올것이다.

내 ip주소에 ord()된 값을 모두 넣어주면 된다.

 

~이런식으로 계산해서 풀면되는데 이상하게 문제가 안 풀려서 결국 phptester를 사용했다.

 

 

PHPTESTER - Test PHP code online

This application is free so please don't break it! Contact :phptester.net@gmail.com Dear Hacker you don't need to hack this free website to prove that you are very good!!!! Updates: I'm trying a new approche, PHP 7.1 to 7.4 version added but still in test

phptester.net

 

forfor.php는 삭제하고 입력해줘야 함 ㅠ

아이고 어려워

728x90

'CTF, 워게임 문제 풀이 > webhacking.kr' 카테고리의 다른 글

webhacking.kr 35번 문제  (0) 2022.09.15
webhacking.kr 34번 문제  (0) 2022.09.15
webhacking.kr 32번 문제  (0) 2022.09.05
webhacking.kr 29번 문제 풀이  (0) 2022.08.30
webhacking.kr 28번 문제 풀이  (0) 2022.08.30

댓글