Hacking/Web.

webhacking.kr 41번 write up

2017. 11. 3. 15:02

index.phps에 가면 해당 문제의 소스를 확인할 수 있다. 

문제에는 딱히 취약한 함수가 없어보이지만 copy() 함수가 취약하다. 만약 destination에 디렉터리가 온다면 Warning 을 띄울 수 있다는 취약점을 갖고 있는데 이 41번 문제를 이렇게 풀 수 있다. 


copy() 함수의 취약점을 간단한 예제로 설명해보겠다. 기본적인 소스는 webhacking.kr 과 거의 동일하다. 



해당 PHP 소스는 같은 디렉토리에 있는 tmp 파일을 $hidden_dir 경로로 입력받은 파일 이름으로 복사하는 기능을 한다. webhacking.kr 의 소스와는 동일하게 <, > 는 replace 시킨다. 


ch4n3@ip-172-31-0-14 ~/tmp $ ./copy_vuln.php "123"

================================

[*] copy file name : 123

================================

Hello World


정상적으로 동작하는 것도 확인했다. 

그런데, 만약에 $argv[1]로 <, >을 넘기면 어떨까? 꺽쇠가 replace 되므로 destination에는 디렉터리가 들어가 있을 것이다. 한



이렇게 Warning이 뜨는 것을 확인했다. Warning이 뜨면서 파일을 복사하지 못했다. 

webhacking.kr에서는 fwrite() 함수가 그 다음 줄에서 실행되므로, 에러를 내뿜고 hidden_dir 을 뿜어줄 것이므로 해당 문제를 풀 수 있다. 






 

'Hacking > Web.' 카테고리의 다른 글

CTF SSRF시 확인사항  (0) 2017.11.06
SQL Injection Tricks  (0) 2017.11.04
mysql false based sql injection  (0) 2017.11.01
LFI exploit with php wrappers  (0) 2017.10.18
Markdown에서 XSS  (0) 2017.10.18