rax => strlen 결과
rbp => stdout
rbx => strlen 결과
--------------------
eax => stdout 안에 값
rdx => rbp + 0x88 안에있는 포인터
r8 => fs:0x10 값
0x7ffff7dd3780 => FILE Pointer 같음
[0xf7ff670000000001 ( fs:0x10 + 1 )]
rdi : stdout
stdout + 0xd8 => _IO_file_jumps
stdout + 0xd8 포인터를 덮으면 될듯.
그리고 실제로 됬다.... secretgarden 풀었따리
힙베, 립베 릭하고
_IO_file_jumps는 vtable 꼴이므로 이걸 heap 쪽에 넣어두고,
패빈덥으로 stdout 쪽에 받고, stdout + 0xd8 에 있는 _IO_file_jumps 를 아까 넣은 heap 주소로 덮으면
heap 주소 + 0x38 ( IO_file_jumps + 0x38 ) 에[ 있는게 실행된다. ( _IO_file_xsputn )
'Today' 카테고리의 다른 글
문제 (0) | 2018.02.19 |
---|---|
pop rbp => leave ret (1) | 2018.02.11 |
pyjail (0) | 2018.02.08 |
Gadget (0) | 2018.02.08 |
Environ, atexit (0) | 2018.02.07 |