[webhacking.kr] old-44

minnie·2023년 10월 5일
post-thumbnail

문제 링크

일단 문제 페이지에 들어가묘면 시작 페이지가 아래같이 생겼으므로

Name에 들어갔을 때 flag를 얻을 수 있는 입력을 찾아야 하는 것 같다.
view-source에서 소스 코드를 확인해보자

Source 를 보면

system("echo 'hello! {$id}'"); // You just need to execute ls

라고 쓰여져 있음. -> 즉 ls만 실행하면 된다고 써있으니까 참고하도록 한다.
이때 ls는 리눅스 명령어로 현재 위치한 디렉토리에 있는 파일 및 폴더 리스트를 출력하는 역할을 한다는 것을 기억하자.
코드를 더 살펴보면

input name=id type=text maxlength=5

로 name에 들어가는 값은 id 로 종류는 '글'이며 , 최대 길이는 5 임을 알 수 있다.

일단 guest를 name에 입력하고 submit을 눌러보니 아래와 같은 결과가 나왔다.

그럼 실제로

system("echo 'hello! {$id}'");

가 실행되는 것을 확인했으므로 ls가 해당 코드에서 실행되도록 입력해야겠다!

그러면 "echo ‘hello!’ ‘ls’"와 같은 형태로 바꾸면 ls가 실행되겠다!
Hello! 전에 있는 ‘를 닫아주고 ls전에 새로운 ‘를 열어주면 되므로 ‘ ‘ls를 입력해 봤다.

따옴표가 무시되고 hello! ls로 출력된다... 그럼 _“echo ‘hello’ ‘ls’ “_ 가 아닌 _“echo ‘hello’&’ls’”_ 로 입력해 보자 : ‘&’ls 를 입력해봤다.

파일 리스트와 hello가 모두 출력되었다!
Hello를 제외하면
flag_29cbb98dafb4e471117fec409148e9386753569e 와 index.php가 출력되었으므로 이 둘이 ls로 출력된 디렉토리에 있는 파일들이다.
이때 사이트의 URL을 확인해보면 http://webhacking.kr:10005/index.php로 Index.php파일은 현재 실행되는 name입력창이 있는 파일임을 알 수 있다. 그러므로 URL에서 index.php부분을 지우고 flag_29cbb98dafb4e471117fec409148e9386753569e 을 넣어서 해당 파일의 URL주소http://webhacking.kr:10005/flag_29cbb98dafb4e471117fec409148e9386753569e로 이동해보면
와 같이 플래그 값을 확인할 수 있다.

0개의 댓글