상세 컨텐츠

본문 제목

[PlaidCTF 2013] ropasaurusrex

SYSTEM HACKING/CTF, etc

by koharin 2019. 8. 15. 23:35

본문

728x90
반응형

1. IDA - pseudo code 확인

 

 

sub_80483f4 함수 : 0x88 = 136 바이트인 buf 변수에 256 바이트 입력받아서 overflow 취약점 있다.

 

2. protection tech 확인

 

 

3. read, write 함수의 plt, got 주소 구하기

 

read 함수와 write 함수 호출하려면 plt 주소가 필요하고,

read_got를 system 함수 주소로 덮으려면 read_got 필요!

 

 

 

-writeplt 주소 -> write 함수 호출해 read_got 영역의 주소 출력

 

 

 

read_plt = 0x804832c

read_got = 0x804961c

write_plt = 0x804830c

 

4. ROP 컨셉

 

# method1

 

1. read(0, bss, len(shellcode)) : bss 영역에 shellcode 넣음

2. mprotect(bss, 0x1000, 7) : mprotect 함수로 shellcode 넣은 bss 영역의 0x1000 크기를 rwx 권한을 줌

3. bss 실행 => bss 실행해서 shellcode 줘서 실행하면 쉘 실행

 

# method2

 

1. read 함수 이용해 “/bin/sh” 명령을 쓰기 가능한 메모리 영역에 저장 => "/bin/sh" 전달

read(0, writableArea, len(str(binsh)))

2. write 함수 이용해 read 함수의 .got 영역에 저장된 값 출력 => read_got 받아 libcBase 구하자

write(1, read_got, len(str(read_got)))

3. read 함수 이용해 read 함수의 .got 영역에 system 함수의 주소로 덮어씀 => system_addr 전달

read(0, read_got, len(str(read_got)))

4. read 함수 호출

read(writableArea)

read.got 영역에 system 함수의 주소가 저장되어 있기 때문에 system 함수가 호출됨

따라서 실질적으로 system(writableArea)를 하는 것과 같음!

 

 

5. 필요한 정보

 

/bin/sh” 명령 저장할 writable 한 메모리 공간

Read(), write() 함수의 plt, got

System 함수 주소 => offset을 구해서 libcbase에 더하는 것으로 구하자

"pop,pop,pop,ret" 가젯 위치 => read, write 함수 모두 인자 3개이므로 "pop;pop;pop;ret" 가젯 사용

 

6. writable space

 

 

0x8049000 0x804a000 영역이 writable space이다.

 

$ objdump -h ./ropsaurusrex

 

 

 

“.got.plt”, “.data”, “.bss” 섹션이 위의 writable 영역에 속한다.

따라서 “.bss” 섹션에 shellcode를 올리고 mprotect 함수로 실행권한을 주면 쉘코드가 실행될 수 있다.

mprotect 함수는 addr를 페이지에 맞게 넣어야 하므로 1000 단위로 “.bss” 섹션에서주소를 선택하려는데 크기가 너무 작다그냥 writable space 주소를 1000 단위로 아무거나 고르자.

Shellcode 넣을 주소 : 0x804a000 

(mprotect로 실패해서 0x8049628로 선택..!)

 

$ objdump -d ./ropsaurusrex | grep -B3 “ret”

 

 

“pop;pop;pop;ret” 가젯 주소 : 0x80484b6

 

6. buf에서 return address까지 거리

 

우분투랑 ida에서 디버깅 안 되서 거리를 못 구하겠는데

buf 크기가 136 바이트니까 SFP 4 바이트 더해서 140 바이트로 생각하고 해보자

(근데 맞았다...!)

 

7. exploit code

 

 

8. exploit

 

728x90
반응형

'SYSTEM HACKING > CTF, etc' 카테고리의 다른 글

r0pbaby 풀고 정리  (0) 2019.08.16
[Defcon 2015] r0pbaby  (0) 2019.08.16
[HITCON-Training] lab5 : simplerop  (0) 2019.08.15
[TAMU 2019] pwn2  (0) 2019.08.14
[TAMU 2019] pwn1  (0) 2019.08.14

관련글 더보기