1. IDA로 pseudo code 확인
reduced_shell 에 메뉴가 있고, 각 메뉴에서 선택하면 해당 명령어를 실행한다.
gets 함수로 s 변수로 입력받는다. 이것으로 payload를 전달하면 될 듯하다.
pwn4 실행파일을 실행해보면 명령어 실행결과가 출력된다.
그리고 exit 또는 5를 입력하면 종료된다.
2. 보호기법 확인
NX 만 걸려있다. 따라서 stack에서 쉘코드 실행을 못할테니 RTL을 생각했다.
3. s 에서 return address 거리
일단 IDA로 보면 ebp-1Ch을 했으므로 s의 크기는 0x1C = 28 바이트이다.
reduced_shell 첫 번째 명령어에서 bp1, gets 함수 call 명령어에서 bp2를 잡아서 거리를 구해보자.
gets 함수 호출 전 push eax를 하므로 eax를 확인해보면 된다.
각 bp에서 구한 주소를 빼니 32 바이트가 나온다.
s(28) + SFP(4) + return address(4) 인 stack 구조를 가질 것이다.
4. system, exit, "/bin/sh" 주소
RTL 공격을 위해 system, exit, "/bin/sh" 주소를 구해보자.
이번에 IDA를 봤을 때 Hex View로 "/bin/sh"가 바로 눈에 들어와서 "/bin/sh" 주소는 구하기 쉬울 것 같다.
system 주소 : 0x8048430
exit 주소 : 0x8048440
"/bin/sh" 주소 : 0x804a038
5. payload
6. exploit
[HITCON-Training] lab5 : simplerop (0) | 2019.08.15 |
---|---|
[TAMU 2019] pwn2 (0) | 2019.08.14 |
[TAMU 2019] pwn1 (0) | 2019.08.14 |
[HITCON-Training] lab3 : ret2sc (0) | 2019.08.10 |
[TAMU 2018] pwn3 (0) | 2019.08.10 |