|  |
| |
| pwnnnt |
step in / step over 둘 중 어떤걸 하셨죠 ? |
2017/03/31 |
|
| pwnnnt |
아 main 함수에서 call <fgets()>를 한 다음 주소를 말하시는 건가요 ? |
2017/03/31 |
|
| vngkv123 |
네 gdb상 그냥 call<fegts>다음에 b *로 걸었어요 |
2017/03/31 |
|
| vngkv123 |
0x0804855c <main+103>: call 0x80483c8
0x08048561 <main+108>: add esp,0x10 <<<< 여기에
b *main+108으로 걸은상태이고 저거 콜하는건 fgets함수입니다. |
2017/03/31 |
|
| pwnnnt |
그렇다면 jmp eip 된 상태입니다. |
2017/03/31 |
|
| pwnnnt |
0x08048561 <main+108>: add esp,0x10
이거는 함수호출규악 보시면 알겠지만, 함수 끝난 뒤 스택에서 인자를 정리하는 것입니다. |
2017/03/31 |
|
| vngkv123 |
추가 질문 하나만 해볼게여 ㅠ
low addr high addr
~~ | sfp | ret | argv1 | argv2 | argv3....이런식으로 쌓일텐데
리턴까지 진행되면 뒤의 argv들은 알아서 정리되는건가요?? 아니면 스택에 남아있나요??
위의 fgets가 진행되었을때요 |
2017/03/31 |
|
| vngkv123 |
아아아아 그렇네요 ㅋㅋㅋ 알겠습니당 ! |
2017/03/31 |
|
| pwnnnt |
함수 호출 규약인데 규악이라고 적어놨네요 ;ㅁ;
low addr high addr
fgets stack | sfp, main()_ebp | ret, <main+108> | argv1 | argv2 | argv3...
입니다. |
2017/03/31 |
|
| pwnnnt |
인자정리는 이해가신것 같아서.. 따로 안적었습니다 ! |
2017/03/31 |
|