Note/pwnable

[NOTE : pwnable] 어떨 때 syscall ROP를 하나요?

jir4vvit 2021. 4. 16. 14:14

BOF가 터져서 RET를 어떤 함수(주소)로 덮을까 고민이 되었다.

 

함수 목록을 보면 flag를 출력해주는 함수도 없었고, system함수도 존재하지 않았따... 

심지어 nx도 걸려있어서 쉘코드 실행도 못한다.

 

출력해주는 함수도 없어서 leak도 못하는 상황

 

그리고 static으로 컴파일되어있을때, 혹은 stripped 파일일 때, 

(전자는 모든 함수가 sub_*, 후자는 사용자정의함수가 sub_*)

 

이럴 때 syscall ROP를 한다.

jiravvit.tistory.com/entry/HackCTF-Pwnable-look-at-me-%ED%92%80%EC%9D%B4-32bit-syscall

jiravvit.tistory.com/entry/DEFCON-2019-speedrun-001-%ED%92%80%EC%9D%B4?category=925147

 

 

(+)

syscall 가젯이 없을 땐 특정 함수의 1byte를 함수 내부의 syscall 부분의 1byte로 덮어주면 plt 호출 시 syscall이 호출된다.