-
[Webhacking.kr] 44번 풀이Wargame/webhacking.kr (old) 2019. 5. 8. 16:12
name에 test를 입력하여 Make 버튼을 클릭해보았다.
go.html로 넘어가고 hello test가 출력된다.
admin으로 만들어보니 hello admin이 출력된다. admin으로 접근하는것은 아닌것 같다.
이것저것해보니 name의 길이는 5글자로 제한되어 있다.
도저히 어떤 문제인지 알 수 없어 찾아보니 Command Injection 문제였다.
name의 값을 다른 것을 넣어줄 때마다 값이 바뀌는 것을 보니
"echo 'hello $name'" > index/go.html 의 명령어가 실행되는 것으로 추측하였다.
;ls
go.html 페이지에 아무 값도 출력되지 않았다.. 필터링되어 있는 것 같다.
어떤 문자가 필터링되어 있는지 알아보기 위해 ;를 입력해보았다.
hello만 출력되었다. 공백문자로 치환되는것 같다.
;를 우회하기위해 &를 입력해보았다.
&는 필터링되어있지 않다. &를 대신 사용하면 된다.
[ Chaining Operator ] https://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/
[ Linux 다중 명렁어 ] https://brownbears.tistory.com/205
ls를 우회하는 방법을 찾아보았는데,
리눅스의 명령어는 '를 문자사이에 입력해도 명령어로 인식한다. (ls == 'l's)
&'l's
예상과는 달리 hello &'l's가 출력되었다.
"echo 'hello $name'" > index/go.html
"echo 'hello &'l's'" > index/go.html
'의 위치상 명령어로 인식되지 않고 문자열로 인식된 것 같다.
"echo 'hello '&l's'" > index/go.html
echo 'hello '와 &l's'로 인식, &ls의 명령어가 실행된다.
password가 있을 것 같은 challenge44_PaSs_w0Rd___.php에 접근하면 문제가 풀린다.
'Wargame > webhacking.kr (old)' 카테고리의 다른 글
[Webhacking.kr] 46번 풀이 (0) 2019.05.08 [Webhacking.kr] 45번 풀이 (0) 2019.05.08 [Webhacking.kr] 43번 풀이 (0) 2019.05.07 [Webhacking.kr] 42번 풀이 (0) 2019.05.07 [Webhacking.kr] 41번 풀이 (0) 2019.05.07 댓글