it 공부 일기 - 워게임 ctf 풀이 및 언어 강좌모음

webhacking challenge 6번 문제 풀이 본문

webhacking explanation

webhacking challenge 6번 문제 풀이

kimtong 2020. 12. 12. 13:15

webhacking.kr challenge 6번 문제를 풀어보겠다.

 

제대로된 webhacking challenge 6번 문제에서 제공하는 소스코드를 해석한 글을 보고싶다면

https://webhacking-kim.tistory.com/13

 

webhacking 6번 문제 php 코드 해석

webhacking.kr 의 6번 문제 php 코드를 보면 부분이 인코딩 시키는 부분과 디코딩 시키는 부분이있다. 이제 하나씩 해석을 해보자 include "../../config.php"; - include 함수를 이용해 ../../ 위치에있는 con..

webhacking-kim.tistory.com

를 참고하면은 좋다

 

6 번 문제에는

view-source  인 a 태그로된 글과

ID : guest
PW : 123qwe 가 있다.

먼저 view-source 를 들어가보자

 

이렇게 나오는데 너무 길다.

하지만 복잡하게 생각하지말고 해석을 해보자

 

먼저 

- 여기에는 쿠키 값 user 값이 없다면

- $val_id 변수에는 guest 를 선언하고

- $val_pw 변수에는 123qwe 이라는 문자열을 선언한 다음

 

- 각각 $val_id 와 $val_pw 를 base64_encode 를 이용하여 인코딩을 
- for($i=0;$i<20;$i++) 으로 인해 20번을 시킨 다음

 

- str_replace 함수를 이용해 숫자들을 지정한 특수문자로 치환을 한 다음

 

Setcookie("user",$val_id,time()+86400,"/challenge/web-06/");
Setcookie("password",$val_pw,time()+86400,"/challenge/web-06/"); 

 

- setcookie 함수를 이용해 user 과 password 이름으로 쿠키를 만든다.

 

그리고 밑에 php 코드에는

$decode_id=$_COOKIE['user'];
$decode_pw=$_COOKIE['password'];

 

$decode_id 에 쿠키 user 값을 선언하고

$decode_pw 에 쿠키 password 값을 선언한다.

 

그리고 그 밑에는

- 각 $decode_id 와 $decode_pw 변수에있는 값의 특수문자들을 숫자로 바꾼다음

 

for($i=0;$i<20;$i++){
  
$decode_id=base64_decode($decode_id);
  
$decode_pw=base64_decode($decode_pw);
}

- base64_decode 함수를 이용해 $decode_id 와 $decode_pw 변수들을 20번 디코딩을 시킨다.

 

그리고 제일 중요한 부분같은게 있다.

if($decode_id=="admin" && $decode_pw=="nimda"){
  
solve(6);
}

- 만약에 $decode_id 값에는 admin 이 있고 $decode_pw 에 nimda 가 있다면 solve(6); 이라는 힘수를 불러온다.

 

이번문제에는 setcookie 가 있는것을 보면 쿠키 관련 문제일것으로 유추를 해보고

 

- $val_id 와 $val_pw 에다가 admin , nimda를 넣은다음

 

- 인코딩을 시키는것을 똑같이 한 다음에

 

인코딩 시킨값을 user <- admin , password <- nimda 각각 변조를 시켜보겠다.

 

나는 서버를 구축하기 귀찮아서 그냥 

 

repl.it 사이트에서 php web server 를 사용하여  인코딩을 시켜보았다

 

사용법을 모른다면 밑의 링크를 들어가서 사용해보자

https://webhacking-kim.tistory.com/7

 

web - repl.it 를 사용해봅시다

오늘은 우리가 보통 html 이나 css , js ,php 등 웹 언어를 빠르고 간결하게 편하게 사용하기 위해 사용되는것중에 하나가 repl.it The collaborative browser based IDE Repl.it is a simple yet powerful online..

webhacking-kim.tistory.com

 

이제 인코딩을 적용시키면은 

 

이렇게 admin 과 nimda 를 인코딩 시키고 str_replace 함수를 이용해 숫자 -> 특수문자로 치환한 값이 나오게 된다.

소스코드는 이렇다.

더보기

소스코드

<?php

$val_id="admin";

$val_pw="nimda";

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);



echo "id:<br>".$val_id."<br>pw:<br>".$val_pw;



?>

 

답은

쿠키 user 부분에는 

더보기

Vm0wd@QyUXlVWGxWV0d^V!YwZDRWMVl$WkRSV0!WbDNXa!JTVjAxV@JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll&U@tWVWJHaG9UVlZ$VlZadGNFSmxSbGw!VTJ0V!ZXSkhhRzlVVmxaM!ZsWmFjVkZ0UmxSTmJFcEpWbTEwYTFkSFNrZGpSVGxhVmpOU!IxcFZXbUZrUjA!R!UyMTRVMkpIZHpGV!ZFb$dWakZhV0ZOcmFHaFNlbXhXVm!wT!QwMHhjRlpYYlVaclVqQTFSMWRyV@&kV0!ERkZVbFJHVjFaRmIzZFdha!poVjBaT@NtRkhhRk&sYlhoWFZtMXdUMVF$TUhoalJscFlZbGhTV0ZSV@FFTlNiRnBZWlVaT!ZXSlZXVEpWYkZKRFZqQXhkVlZ!V@xaaGExcFlXa!ZhVDJOc@NFZGhSMnhUVFcxb@IxWXhaREJaVmxsM!RVaG9hbEpzY0ZsWmJGWmhZMnhXY!ZGVVJsTk&WMUo!VmpKNFQxWlhTbFpYVkVwV!lrWktTRlpxUm!GU@JVbDZXa!prYUdFeGNHOVdha0poVkRKT@RGSnJhR@hTYXpWeldXeG9iMWRHV@&STldHUlZUVlpHTTFSVmFHOWhiRXB*WTBac!dtSkdXbWhaTVZwaFpFZFNTRkpyTlZOaVJtOTNWMnhXWVZReFdsaFRiRnBZVmtWd!YxbHJXa$RUUmxweFVtMUdVMkpWYkRaWGExcHJZVWRGZUdOSE9WZGhhMHBvVmtSS!QyUkdTbkpoUjJoVFlYcFdlbGRYZUc&aU!XUkhWMjVTVGxOSGFGQlZiVEUwVmpGU!ZtRkhPVmhTTUhCNVZHeGFjMWR0U@tkWGJXaGFUVzVvV0ZreFdrZFdWa$B*VkdzMVYySkdhM@hXYTFwaFZURlZlRmR!U@s!WFJYQnhWVzB^YjFZeFVsaE9WazVPVFZad@VGVXlkREJXTVZweVkwWndXR0V^Y0ROV@FrWkxWakpPU!dKR!pGZFNWWEJ@Vm!0U!MxUXlUWGxVYTFwb!VqTkNWRmxZY0ZkWFZscFlZMFU!YVUxcmJEUldNalZUVkd^a!NGVnNXbFZXYkhCWVZHdGFWbVZIUmtoUFYyaHBVbGhDTmxkVVFtRmpNV!IwVTJ0a!dHSlhhR0ZVVnpWdlYwWnJlRmRyWkZkV@EzQjZWa@R*TVZZd0!WWmlla!pYWWxoQ!RGUnJXbEpsUm!SellVWlNhVkp!UW&oV!YzaHJWVEZzVjFWc!dsaGlWVnBQVkZaYWQyVkdWWGxrUkVKWFRWWndlVmt$V@&kWFIwVjRZMFJPV@!FeVVrZGFWM@hIWTIxS!IxcEhiRmhTVlhCS!ZtMTBVMU!^VlhoWFdHaFlZbXhhVjFsc!pHOVdSbXhaWTBaa@JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa@Q0YTFOR!ZuTlhiRlpYWWtoQ!NWWkdVa@RWTVZwMFVtdG9VRll&YUhCVmJHaERUbXhrVlZGdFJtcE&WMUl$VlRKMGExZEhTbGhoUjBaVlZucFdkbFl$V@&OT@JFcHpXa@R$YVZORlNrbFdNblJyWXpGVmVWTnVTbFJpVlZwWVZGYzFiMWRHWkZkWGJFcHNVbTFTZWxsVldsTmhWa$AxVVd^d!YySllVbGhhUkVaYVpVZEtTVk&zYUdoTk!VcFZWbGN^TkdReVZrZFdiR!JvVW&wc@IxUldXbmRsYkZsNVkwVmtWMDFFUmpGWlZXaExWMnhhV0ZWclpHRldNMmhJV!RJeFMxSXhjRWhpUm!oVFZsaENTMVp0TVRCVk!VMTRWbGhvV0ZkSGFGbFpiWGhoVm!^c@NscEhPV$BTYkhCNFZrY$dOVll^V@&OalJXaFlWa!UxZGxsV!ZYaFhSbFp&WVVaa!RtRnNXbFZXYTJRMFdWWktjMVJ!VG!oU@JGcFlXV$hhUm!ReFduRlJiVVphVm0xU!NWWlhkRzloTVVwMFlVWlNWVlpXY0dGVVZscGhZekZ$UlZWdGNFNVdNVWwzVmxSS0!HRXhaRWhUYkdob!VqQmFWbFp0ZUhkTk!WcHlWMjFHYWxacmNEQmFSV!F$VmpKS@NsTnJhRmRTTTJob!ZrUktSMVl^VG&WVmJFSlhVbFJXV!ZaR!l*RmlNV!JIWWtaV!VsZEhhRlJVVm!SVFpXeHNWbGRzVG!oU!ZFWjZWVEkxYjFZeFdYcFZiR@hZVm!^d!lWcFZXbXRrVmtwelZtMXNWMUl*YURWV0!XUXdXVmRSZVZaclpGZGliRXB&Vld0V!MySXhiRmxqUldSc!ZteEtlbFp0TURWWFIwcEhZMFpvV@sxSGFFeFdNbmhoVjBaV@NscEhSbGROTW!oSlYxUkplRk!^U!hoalJXUmhVbXMxV0ZZd!ZrdE&iRnAwWTBWa!dsWXdWalJXYkdodlYwWmtTR0ZHV@xwaVdHaG9WbTE0YzJOc!pISmtSM0JUWWtad0&GWlhNVEJOUmxsNFYyNU9hbEpYYUZoV@FrNVRWRVpzVlZGWWFGTldhM0I@VmtkNFlWVXlTa!pYV0hCWFZsWndSMVF^V@tOVmJFSlZUVVF$UFE9PQ== 

를 넣고

password 에는

더보기

Vm0wd@QyUXlVWGxWV0d^V!YwZDRWMVl$WkRSV0!WbDNXa!JTVjAxV@JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll&U@tWVWJHaG9UVlZ$VlZacVFtRlRNbEpJVm!0a!dHSkdjRTlaVjNSR!pVWmFkR0&GU@!^U@JHdzFWVEowVjFaWFNraGhSemxWVmpOT00xcFZXbUZrUjA!R!drWndWMDFFUlRGV!ZFb$dWakZhV0ZOcmFHaFNlbXhXVm0xNFlVMHhXbk&YYlVaclVqQTFSMWRyV@xOVWJVcEdZMFZ$VjJKVVJYZFdha!pYWkVaT@MxZHNhR@xTTW!oWlYxZDRiMkl&Vm&OVmJGWlRZbFZhY@xWcVFURlNNVlY!VFZSU!ZrMXJjRWxhU0hCSFZqRmFSbUl*WkZkaGExcG9WakJhVDJOdFJraGhSazVzWWxob!dGWnRNSGhPUm!^V!RVaG9XR0pyTlZsWmJGWmhZMVphZEdSSFJrNVNiRm9$V@xWYVQxWlhTbFpqUldSYVRVWmFNMVpxU@t0V!ZrcFpXa!p$VjFKV@NIbFdWRUpoVkRKT@MyTkZhR$BTYXpWWVZXcE9iMkl^V@&STldHUlZUVlpXTkZVeGFHOWhiRXB*WTBac!dtSkdXbWhaTW&oWFkxWkdWVkpzVGs!WFJVcElWbXBLTkZReFdsaFRhMlJxVW0xNGFGVXdhRU&UUmxweFVtMUdVMkpWYkRaWGExcHJZVWRGZUdOSE9WZGhhMHBvVmtSS!QyUkdTbkpoUjJoVFlYcFdlbGRYZUc&aU!XUkhWMjVTVGxOSGFGQlZiVEUwVmpGU!ZtRkhPVmhTTUhCNVZHeGFjMWR0U@tkWGJXaGFUVzVvV0ZreFdrZFdWa$B*VkdzMVYySkdhM@hXYTFwaFZURlZlRmR!U@s!WFJYQnhWVzB^YjFZeFVsaE9WazVPVFZad@VGVXlkREJXTVZweVkwWndXR0V^Y0ROV@FrWkxWakpPU!dKR!pGZFNWWEJ@Vm!0U!MxUXlUWGxVYTFwb!VqTkNWRmxZY0ZkWFZscFlZMFU!YVUxcmJEUldNV@h@V!ZaS!IxTnNaRlZXYkZwNlZHeGFZVmRGTlZaUFZtaFRUVWhDU@xac!pEUmpNV!IwVTJ0b@FGSnNTbGhVVlZwM!ZrWmFjVk&yWkZOaVJrcDZWa@N^YzFVeVNuSlRiVVpYVFc!b!dGbHFTa!psUm!SWldrVTFWMVpzY0ZWWFZsSkhaREZaZUdKSVNsaGhNMUpVVlcxNGQyVkdWbGRoUnpsb!RWWndlbFl&Y0VkV0!ERjFZVWhLV@xaWFVrZGFWM@hIWTIxS!IyRkdhRlJTVlhCS!ZtMTBVMU!^VlhoWFdHaFlZbXhhVjFsc!pHOVdSbXhaWTBaa@JHSkhVbGxhVldNMVlWVXhXRlZyYUZkTmFsWlVWa@Q0YTFOR!ZuTlhiRlpYWWtoQ!NWWkdVa@RWTVZwMFVtdG9VRll&YUhCVmJHaERUbXhrVlZGdFJtcE&WMUl$VlRKMGExZEhTbGhoUjBaVlZucFdkbFl$V@&KbFJtUnlXa!prVjJFelFqWldhMlI@VFZaWmQwMVdXbWxsYTFwWVdXeG9RMVJHVW&KWGJFcHNVbTFTZWxsVldsTmhWa$AxVVd^d!YySllVbGhhUkVaYVpVZEtTVk&zYUdoTk!VcFdWbGN^TkdReVZrZFdXR$hyVWpCYWNGVnRlSGRsYkZsNVpVaGtXRkl$VmpSWk!GSlBWMjFGZVZWclpHRldNMmhJV!RJeFMxSXhjRWhpUm!oVFZsaENTMVp0TVRCVk!VMTRWbGhvV0ZkSGFGbFpiWGhoVm!^c@NscEhPV$BTYkhCNFZrY$dOVll^V@&OalJXaFlWa!UxZGxsV!ZYaFhSbFp&WVVaa!RtRnNXbFZXYTJRMFdWWktjMVJ!VG!oU@JGcFlXV$hhUm!ReFduRlJiVVphVm0xU!NWWlhkRzloTVVwMFlVWlNWVlpXY0dGVVZscGhZekZ$UlZWdGNFNVdNVWwzVmxSS0!HRXhaRWhUYkdob!VqQmFWbFp0ZUhkTk!WcHlWMjFHYWxacmNEQmFSV!F$VmpKS@NsTnJhRmRTTTJob!ZrUktSMVl^VG&WVmJFSlhVbFJXV!ZaR!l*RmlNV!JIWWtaV!VsZEhhRlJVVm!SVFpXeHNWbGRzVG!oU!ZFWjZWVEkxYjFZeFdYcFZiR@hZVm!^d!lWcFZXbXRrVmtwelZtMXNWMUl*YURWV0!XUXdXVmRSZVZaclpGZGliRXB&Vld0V!MySXhiRmxqUldSc!ZteEtlbFp0TURWWFIwcEhZMFpvV@sxSGFFeFdNbmhoVjBaV@NscEhSbGROTW!oSlYxUkplRk!^U!hoalJXUmhVbXMxV0ZZd!ZrdE&iRnAwWTBWa!dsWXdWalJXYkdodlYwWmtTR0ZHV@xwaVdHaG9WbTE0YzJOc!pISmtSM0JUWWtad0&GWlhNVEJOUmxsNFYyNU9hbEpYYUZoV@FrNVRWRVpzVlZGWWFGTldhM0I@VmtkNFlWVXlTa!pYV0hCWFZsWndSMVF^V@tOVmJFSlZUVVF$UFE9PQ==

를 넣으면은 된다.

뭔가 많어...

이제 user 쿠키 값과 password 값을 수정 시킨다음 v 버튼인 초록색 버튼을 눌러서 저장을 시킨다음

새로고침을 하면은 

 

이렇게 성공이 된것을 확인할 수가있다

하지만 나는 이미 클리어했지떄문에 저렇게 나오니 처음 꺠는 사람은 다르게 나올것이다

 

-- 요약 -- 

더보기

 

id 변수에는 admin

pw 변수에는 nimda를 넣고

base64 인코딩을 repl.it 에서 20 번 돌린다음

str_replace 를 추가하여 숫자를 특수문자로 바꾸고 난 다음에

user 쿠키과 password 쿠키에다가 각각 인코딩한 값들을 넣어서 수정시킨다음 저장을 하고

새로고침을 하면은 클리어가 된다.

제대로된 webhacking challenge 6번 문제에서 제공하는 소스코드를 해석한 글을 보고싶다면

https://webhacking-kim.tistory.com/13

 

webhacking 6번 문제 php 코드 해석

webhacking.kr 의 6번 문제 php 코드를 보면 부분이 인코딩 시키는 부분과 디코딩 시키는 부분이있다. 이제 하나씩 해석을 해보자 include "../../config.php"; - include 함수를 이용해 ../../ 위치에있는 con..

webhacking-kim.tistory.com

를 참고하면 좋다.