IT/Wargame

[System Hacking] basic_rop_x64

kykyky 2024. 3. 19. 18:16

스택 프레임 분석

 



Return address (0x8) 
SFP (0x8)
buf [rbp-0x40] (0x40)

 


공격 계획



최종 목표: system("/bin/sh") 수행할 것.



* system() 주소 구하기
= lib_base + system_offset 

** lib_base 구하기
= read() 주소 - read_offset

*** read() 주소 구하기
ROP를 통해, write(1, read@got, ...)

* "/bin/sh" 주소 구하기
= lib_base + binsh_offset

** system_offset, read_offset, binsh_offset 구하기
libc를 이용

 

* Return address를 system("/bin/sh")로 Overwrite

ROP를 이용

 

 

 

exploit 코드와 전체 타임라인

 

 

 

고찰

 

 

GOT Overwrite가 아니라, system 함수 주소를 찾아 직접 실행하고 있다.

대신 main으로 다시 돌아와 한번 더 payload를 보냈다. 

 

※ 내생각: 사실 line 59는 불필요하지 않은가? 그리고 따지자면 0x40이 아니라 0x48이어야 정확하지 않은가 싶음.