CTF
[Webhacking.kr]Challenge 6 Writeup
채영채영
2023. 4. 5. 15:34
https://webhacking.kr/challenge/web-06/
https://webhacking.kr/challenge/web-06/
webhacking.kr
다 썼는데 쓰레기같은 학교 네트워크가 내 정성스러운 writeup을 날렸다.
푸는 과정을 다 남겼는데, already pwned 가 떠서 이제 과정을 ... 실시간으로 적어내기가 어렵다. 그래도 문제에서 중요한 부분을 .. 다시 적어보겠다.
<?php
include "../../config.php";
if($_GET['view_source']) view_source();
if(!$_COOKIE['user']){
$val_id="guest"; //1
$val_pw="123qwe";
for($i=0;$i<20;$i++){
$val_id=base64_encode($val_id); //2
$val_pw=base64_encode($val_pw);
}
Setcookie("user",$val_id,time()+86400,"/challenge/web-06/"); //3
Setcookie("password",$val_pw,time()+86400,"/challenge/web-06/");
exit;
}
?>
<?php
$decode_id=$_COOKIE['user'];
$decode_pw=$_COOKIE['password'];
for($i=0;$i<20;$i++){
$decode_id=base64_decode($decode_id); //4
$decode_pw=base64_decode($decode_pw);
}
if($decode_id=="admin" && $decode_pw=="nimda"){ //5
solve(6);
불필요한 코드는 날리고, 문제 해결에 필요한 코드만 남겼다.
1. 초기 id : guest , pw : 123qwe
2. id 와 pw 각각 base64 20번 encode
3. $val_id를 user, $val_pw를 password로 쿠키 설정
4. id 와 pw 각각 base64 20번 decode
5. id = admin, pw = nimda 일 때 SOLVE
즉, 3번에서의 user 가 admin을 20번 encode한 것, password에 nimda를 20번 encode한 것을 넣으면 된다!
encode를 온라인상에서 손수 20번 할 수 있지만, python으로 코드를 작성해서 풀어보겠다.
그럼 이 코드를 가지고 cookie 값을 수정해 보겠다. 앞의 b' ~ 와 뒤의 ~' 를 제외해야함을 주의하자.
수정하고, 새로고침을 하면 solved메시지가 뜰 것이다.