본문 바로가기

system/writeup

2019 insomnihack onewrite

onewrite

2018 insomnihack onewrite

PIE가 걸려있다..

 

근데 바이너리에서 PIE를 leak해주니까 상관없다!

 

둘 중 하나를 leak해주고 1byte aribtrary write가 가능하다.

 

처음에 stack을 leak한 후 ret을 덮어씌워 돌아가 pie를 leak하면 둘 다 leak할 수 있다.

 

하지만 이제부터 어려워지는데 이런 상황이 계속된다면 ret만 한 번 바꿀수 있지 다른 곳에 값을 못쓴다..

 

근데 do_leak 함수의 시작 부분에 가보면 do_leak의 주소값을 rbp+0x10에 넣어준다. 즉, 저 근방으로 jump하면 rbp+0x10의 do_leak, do_overwrite를 들어갈 때 남기는 do_leak, 총 두개가 스택에 남아 한 번의 write를 할 수 있는 기회가 생긴다.

 

이를 반복하여 static이기 때문에 syscall을 이용하여 bss rop를 하면 된다.

 

급하게 푸느라 코드가 매우 더럽습니다 !!


'system > writeup' 카테고리의 다른 글

2019 codegate aeiou  (0) 2019.01.29
2017 rctf rnote  (0) 2019.01.28
2019 codegate god-the-reum  (0) 2019.01.27
2018 codegate zoo  (0) 2019.01.25
2018 codegate super marimo  (0) 2019.01.24