profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 4. 23. 18:12

1. 문제

read 로 입력을 받을 때 bof 가 발생한다.

 

보호 기법 확인

NX 만 걸려있다.

nx + aslr 이 걸려있는 상황에서 leak X -> 64bit rop 를 하려고 했으나, leak 을 할 수 없는 상황이었다.

puts 나 printf 등의 출력함수가 없기 때문이다.

 

이럴 땐 어떻게 해야 할까?

 

syscall rop = system call rop 을 이용해서 풀어준다.

 

 

2. 문제 해결 과정

execve system call

rax : 0x3b

rdi : data

rsi : 0

rdx : 0

 

 

필요한 것들을 구해보자.

 

 

1) Gadget

0x4005ea

 

 

0x4005eb

 

 

 

2. 고정 주소 (data 영역)

data : 0x601030

bss 영역은 stdout 으로 쓰여서 data 영역에 저장해줌.

 

 

read 함수 내에서 sysetm call 발견

함수들의 하위 3바이트는 offset 을 나타내며, 항상 일정하다는 점을 이용 -> read_got의 마지막 바이트를 /x5e 로 overwrite 할 것.

 

 

1) data 영역에 binsh 주입

2) read_got overwrite

2) execve(binsh) 시스템 콜 호출

 

 

 

3. Exploit code

익스플로잇 코드

 

 

플래그 획득!

 

가젯 구하는 것부터 해서 어느하나 쉽지 않았던 문제였따,,$

'Wargame > HackCTF' 카테고리의 다른 글

[HackCTF] Beginner_Heap  (0) 2021.05.08
[HackCTF] Look at me (sysrop)  (0) 2021.04.23
[HackCTF] ROP  (0) 2021.04.20
[HackCTF] Gift  (0) 2021.04.19
[HackCTF] Look at me  (0) 2021.04.19
복사했습니다!