Profile

머리정리하는곳

c2w2m2

puts 분석 조금

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