본문 바로가기

Wargame/Pwnable.kr

Pwnable.kr input-4pt

 Stage 1이다. argc가 100이 되어야하고 argv['A']가 '\x00'이 되어야하고 argv['B']가 '\x20\x0a\x0d'가 되어야 Stage 1이 clear된다. 





 Stage 2이다. 4byte buf를 선언하고 콘솔 입력으로 '\x00\x0a\x00\xff'를 받아야 하고, 파일 디스크립터 2번(stderr)로 '\x00\x0a\x02\xff'를 받아야 clear할 수 있다.






 Stage 3이다. 이름이 '\xde\xad\xbe\xef'인 환경 변수에 '\xca\xfe\xba\xbe' 값이 써진 상태로 프로세스가 생성되어야 한다.





 Stage 4이다. '\x0a' 이름의 파일을 열고 4byte가 '\x00\x00\x00\x00' 가 되야 clear 된다.






마지막 Stage 5이다. argv['C']의 문자열을 정수변환한 값을 포트 번호로 삼아 소켓 서버를 열고 4byte 문자열을 입력받는데 입력 받는 4byte가 \xde\xad\xbe\xef'라면 clear된다.






 python script는 pwntools를 이용했기 때문에 의외로 매우 간단하다. 다른 write-up을 보면 c를 이용한 것들도 많았다. process() 메소드 내의 stderr와 env 인자를 사용하는 것이 핵심이었던 것 같고 나머진 인자 전달과 파일 입출력 등의 문제였다.


소스 코드는 '/tmp/본인생성디렉토리/' 아래 작성하고 flag 파일을 만든 뒤 실제 '/home/input2/flag' 파일과 심볼릭 링크를 걸어놓아야 한다.





끄읏.


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

Pwnable.kr coin1-6pt  (0) 2017.05.14
Pwnable.kr memcpy-10pt  (0) 2017.05.13
Pwnable.kr unlink-10pt  (0) 2017.05.08
Pwnable.kr uaf-8pt  (0) 2017.05.08
Pwnable.kr dragon-75pt  (0) 2017.05.07