1. IDA - pseudo code 확인
print_flag 함수가 보인다.
2. pwn1 실행
Gets 3 개 중에서 처음 2개는 IDA에서 strcmp로 주어진 것을 입력하면 다음으로 넘어갈 수 있고,
마지막 세 번째는 v5 변수의 값이 0xdea110c8 이어야 print_flag 함수로 flag를 출력해준다.
따라서 마지막 gets 함수로 v5 변수의 값을 0xdea110c8으로 변조할 수 있는 방법을 찾아야 한다.
아니면 세 번째 gets 함수 전에 v5를 변조할 방법을 찾아야 한다.
3. debugging
마지막 gets 함수 call 전 bp를 잡고 인자로 push eax를 넣으니까 eax를 출력해보면
s 변수의 시작주소가 0xffffd53d임을 알 수 있다.
실제로 0xffffd53d를 확인해보면 A부터 넣은 값들이 들어있다.
V5가 ebp-10h 위치에 있으므로 ebp-0x10 위치에 0xDEA110C8 값을 넣으면 된다.
제대로된 위치를 구하기 어려워서 s는 ebp-0x3b이고, v5는 ebp-0x10이니까 “A”*(0x3b-0x10)으로 더미를 주고 뒤에 값을 주도록 하자.
4. exploit code
5. exploit
[HITCON-Training] lab5 : simplerop (0) | 2019.08.15 |
---|---|
[TAMU 2019] pwn2 (0) | 2019.08.14 |
[TAMU 2018] pwn4 (0) | 2019.08.10 |
[HITCON-Training] lab3 : ret2sc (0) | 2019.08.10 |
[TAMU 2018] pwn3 (0) | 2019.08.10 |