lob 9번 풀이 troll -> vampire
2019. 8. 14. 05:43ㆍLOB
힌트입니다.
이번에는 argv[1][46]번째가 '\xff'가 아니어야 합니다.
16진수는 A < B < C < D < E < F 순 이므로
F보다 1 작은 것은 E 입니다.
따라서 메모리 효율을 위해 우리는 \xfe로 argv[46]의 공간을 만들어주면 되는데
스택의 주소는 (인텔 기준) 높은 주소에서 낮은 주소로 자라므로
가장 높은 주소는 (커널포함) FFFFFFFF이 됩니다.
커널이 1kb이므로 BFFFFFFF가 되므로
BFFFFFFF-BFFEFFFF= 0x10000
10진수 65536이므로
NOP을 65536개 이상 넣어주면 FE가 되겠죠?
따라서 argv[1]을 이용해 strcpy 부분에서 ret에 argv[2]의 주소를 넣어주고
그 주소는 65536을 뺸 가장 주소이므로
이렇게 gdb를 쓰지 않아도 바로 나올 수 있습니다.
vampire
music world
'LOB' 카테고리의 다른 글
lob 11번 풀이 skeleton -> golem (0) | 2019.11.16 |
---|---|
lob 10번 풀이 vampire -> skeleton (0) | 2019.08.17 |
lob 8번 풀이 orge -> troll (0) | 2019.07.28 |
lob 7번 풀이 darkelf -> orge (0) | 2019.07.28 |
lob 6번 풀이 wolfman -> darkelf (0) | 2019.07.27 |