0day2安全 筆記4 修改臨界變數

2022-10-10 13:57:11 字數 1221 閱讀 3981

第二章

修改臨界變數

#include #include 

#define password "1234567"

int verify_password(char *password)

void

main()

else}}

突破驗證分析:

使strcmp的返回值為1,即ret=0x1。這樣才能讓buffer溢位截斷符(\0x00)覆蓋到flag的的低位上,使ret=0

我們需要讓輸入的密碼為8位且大於password的值才能滿足上訴要求

進入od,引導程式,中文引擎搜尋(智慧型搜尋)

進入我們在程式中注釋輸入密碼的地方,找到verify_password()函式

按回車進入函式繼續分析

strcat函式就是我們要分析溢位過程的地方,我們在這裡下乙個斷點,並執行程式

我們輸入8個q, 此時flag的值即為eax的值1,即返回的是失敗的步驟

f7單步步入函式,分析溢位的過程得知password字串qqqqqqqq分了3次賦值給了buffer,前二次分別給了qqqq,qqqq。第三次給了cccccc00(末尾的00是我們輸入的8位後的截斷符)

分析得知變數flag和buffer的位址分別為0012fb20,0012fb18

函式執行完後,即溢位的00替換掉了低位的01

安全 什麼是0day漏洞?

0day漏洞是指負責應用程式的程式設計師或 商所未知的軟體缺陷。因為該漏洞未知,所以沒有可用的補丁程式。換句話說,該漏洞是由不直接參與專案的人員發現的。術語 0day 是指從發現漏洞到對其進行首次攻擊之間的天數。0day漏洞公開後,便稱為nday漏洞。0day時間表的工作原理如下 乙個人或乙個公司建...

Python學習筆記 day0

本部落格標題設計敏感關鍵字0day,違反相關法律法規,現已處理。1.輸入 raw input 這個可以輸入一行。和c 不同,它不能讀取單個整數 我的意思是,它是以字串儲存的。所以沒有什麼諸如 d這種東西。name raw input 這樣就可以讀入乙個字串,相當於gets name 考慮到人性化設計...

前端學習筆記 day0

utf 8 萬國碼 開發時我們使用的字符集都是utf 8 gb2312 國標 通過meta標籤設定網頁字符集,避免亂碼問題。此處為設定字符集,避免亂碼 用來設定網頁的元資料,底層資料,網頁的屬性。元資料不是給使用者看的 它是自結束標籤 常用的屬性 name指定資料的名稱 content指定資料的內容...