webhacking.kr 44번 문제다.

점수는 500point.

들어가보면 다음과 같이 입력값을 줄 수 있다. 

아무값이나 주고 넣어봤는데 일단 글자수제한이 걸려있다. admin이라 주고 넣어보니 다음과 같이 hello 다음에 내가 준 값이 나온다.

처음엔 sql injection 문젠가 싶어서 이것저것 해봤는데 답이 안나와서 code injection쪽으로 생각을 해봤다. echo hello 내가준값 식으로해서 출력이 되는 것 같다.

그렇다면 ;ls라고 주면 파일 리스트가 나올 것 같다.

넣어보니 아무것도 안나온다. 필터링 되고 있는 것 같다. 그렇다면 ;와 ls를 우회해야 할 것 같다.
echo asdfg;ls 방식에서 ;는 &로 대신 입력해도 두개의 명령어가 다 실행되기 때문에 필터링이 가능할 것 같아서 &만 따로 넣어봤더니 정상적으로 출력된다. 문제는 ls를 우회해야 하는데 이부분은 전혀 감이 안와서 결국 검색을 해봤다 ㅠ
보니까 리눅스에서 ls 같은 명령어를 칠때 명령어 문자 하나하나 사이에 싱글쿼터를 줘서 l's' 식으로 넣어줘도 정상적으로 동작한단다. ㅡㅡ 신기하네 이건 처음 알았다.

그래서 다음과 같이 &l's'로 한번 넣어봤다.

?? 우회는 됬는데 생각처럼 ls가 실행이 안된다. 흠..

$l's'가 그대로 출력된걸보니 echo문이 저걸 출력한것 같다. 그렇다면 처음에 echo 내가준값 형식이라고 생각해서 echo $l's'면 명령어가 둘다 실행될 거라 생각했는데 echo '내가준값' 형식이었다면 echo '$'ls''가 되서 $'ls'가 문자열로 출력된 것 같다. 그렇다면 '$l's'라고 주면 echo ''$l's'가 되서 정상적으로 echo와 ls가 실행될 것 같다.
넣어보니 다음과 같이 파일목록이 나온다.

들어가서 확인해보니 바로 클리어된다.

리눅스에 저런기능이 있는지 새로알게됬다. 성공!


'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 46번  (0) 2018.01.17
webhacking.kr 45번  (0) 2018.01.15
webhacking.kr 43번  (0) 2018.01.15
webhacking.kr 42번  (0) 2018.01.15
webhacking.kr 41번  (0) 2018.01.15
블로그 이미지

JeonYoungSin

메모 기록용 공간

,