Old 06번 문제

들어가니 ID와 PW가 있고 소스코드를 볼 수 있습니다 :D

일단 소스코드를 보도록 합시다!

 

소스코드를 보니 Encoding 부분과 Decoding 부분이 나뉩니다!

Encoding

그럼 인코딩 부분을 먼저 보도록 합시다 :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 값에 저장시켜 버립니다.

Decoding

디코딩은 Encoding 순서와 반대이군요 :D

 

자 그럼 여기서 어떻게하면 풀까요?

밑에 보면

if($decode_id=="admin" && $decode_pw="nimda")

이라는 조건이 보입니다!

암호화되 어떤 문자열에서 디코딩 되었을 때 id가 admin, pw가 nimda이면 답이 되는군요 :D

그럼 id가 admin, pw가 nimda인 상태에서 암호화를 시켜버리면 되겠네요!

 

저는 phptester라는 홈페이지를 이용해서 id와 pw값을 넣고 돌렸습니다!

phptester

오른쪽에 보이시죠 :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