들어가니 ID와 PW가 있고 소스코드를 볼 수 있습니다 :D
일단 소스코드를 보도록 합시다!
소스코드를 보니 Encoding 부분과 Decoding 부분이 나뉩니다!
그럼 인코딩 부분을 먼저 보도록 합시다 :D
if(!$_COOKIE['user']) | 쿠키에 user가 있으면 참, 없으면 거짓 |
$val_id="guest" | val_id 변수에 guest 저장 |
$val_pw="123qwe" | val_pw 변수에 123qwe 저장 |
for($i=0;$i<20;$i++) | 변수 i에 0을 저장하고 i를 1씩 증가시켜 20이 넘을 때까지 반복 |
$val_id=base64_encode($val_id); | val_id 변수의 값을 base64로 인코딩 후 다시 저장 |
$val_pw=base64_encode($val_pw); | val_pw 변수의 값을 base64로 인코딩 후 다시 저장 |
$val_id(pw)=str_replace("A","B",$val_id(pw)); | val_id(pw) 변수의 값에서 A가 존재하면 B로 치환 후 다시 저장 |
Setcookie("user",$val_id, ~ ) | val_id 값을 user라는 쿠키값에 저장 |
Setcookie("password",$val_pw, ~ ) | val_pw 값을 password라는 쿠키값에 저장 |
대략적으로 보면 guest와 password를 base64인코딩 20번을 한 뒤
해당 문자를 다른 문자로 치환해서 cookie 값에 저장시켜 버립니다.
디코딩은 Encoding 순서와 반대이군요 :D
자 그럼 여기서 어떻게하면 풀까요?
밑에 보면
if($decode_id=="admin" && $decode_pw="nimda")
이라는 조건이 보입니다!
암호화되 어떤 문자열에서 디코딩 되었을 때 id가 admin, pw가 nimda이면 답이 되는군요 :D
그럼 id가 admin, pw가 nimda인 상태에서 암호화를 시켜버리면 되겠네요!
저는 phptester라는 홈페이지를 이용해서 id와 pw값을 넣고 돌렸습니다!
오른쪽에 보이시죠 :D
위의 id와 밑의 pw를 쿠키에 넣으면!!
짠! 이렇게 문제가 풀어집니다 :D
정말 쉽죠 ㅎㅎㅎㅎ?
코드만 보고 이해하면 바로 풀리는 문제입니다!
php말고도 python같은 다른언어로 풀어보시는것도 어느정도는 공부되겠죠 :D?
이만 6번문제 풀이였습니다 :D
'CTF > Webhacking.kr' 카테고리의 다른 글
Old - 18 (score:100) (0) | 2020.02.12 |
---|---|
Old - 17 (score:100) (0) | 2020.02.10 |
Old - 16 (score:100) (0) | 2020.02.09 |
Old - 14 (score:100) (0) | 2020.02.07 |
Old - 15 (score 50) (0) | 2020.01.31 |