lob 9번 풀이 troll -> vampire

2019. 8. 14. 05:43LOB

힌트입니다.

이번에는 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