參考教程第三周ctf hctf re_第1頁
參考教程第三周ctf hctf re_第2頁
參考教程第三周ctf hctf re_第3頁
參考教程第三周ctf hctf re_第4頁
參考教程第三周ctf hctf re_第5頁
免費預(yù)覽已結(jié)束,剩余11頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 2014 HCTF Reverse 400目錄第一部分程序初探第二部分分析算法PPT模板下載: 行業(yè)PPT模板: 節(jié)日PPT模板: PPT素材下載: PPT背景圖片: PPT圖表下載: 優(yōu)秀PPT下載: PPT教程: Word教程: Excel教程: 資料下載: PPT課件下載: 范文下載: 試卷下載: 教案下載: PPT論壇: 第一部分第一部分程序初探下載文件首先下載這個題目2022/9/302022/9/30PPT模板下載: 行業(yè)PPT模板: 節(jié)日PPT模板: PPT素材下載: PPT背景圖片: PPT圖表下載: 優(yōu)秀PPT下載: PPT教程: Word教程: Excel教程: 資料下載

2、: PPT課件下載: 范文下載: 試卷下載: 教案下載: PPT論壇: 首先這個程序是一個沒有后綴名的文件,我們可以用linux下的file命令或者windows下的工具TrID查看文件類型這是一個ELF(可執(zhí)行可鏈接)文件,用IDA靜態(tài)分析或者gdb動態(tài)分析5用IDA打開之后,在左側(cè)函數(shù)窗口找到main函數(shù)這里可以用F5反匯編成C代碼第一部分分析算法第二部分6下面來分析代碼 e();ShowMsg(*&argc,argv);這兩行代碼位于程序開頭輸出一些信息,可以不用管write(1,”Now give me the flag:”,0 x16uLL);其中write的定義如下ssize_t

3、write(int fd,const void *buf,size_t count);把指針buf所指的內(nèi)存寫count個字節(jié)到fd所指的文件內(nèi),就是把”Now give me the flag”寫0 x16個字節(jié)到1所指的文件中v5=read(0,&v4,0 x400uLL);其中read()的定義如下ssize_t read(int fd,void *buf,size_t count);成功返回讀取的字節(jié)數(shù),錯誤返回1。讀取count個字節(jié)fd所指的文件內(nèi)容,保存在buf中,同時文件的當(dāng)前讀寫位置后移。這里是讀取文件中的內(nèi)容,然后如果讀取成功,返回值就是讀取的字節(jié)數(shù),失敗就是1,返回值賦值

4、給v5。Check(&v4,v5);這是本題的關(guān)鍵函數(shù),第一個參數(shù)是剛才保存文件內(nèi)容的v4的地址,第二個參數(shù)是剛才的返回值。然后進入check()。2022/9/302022/9/30進入這個函數(shù)后,參數(shù)a1是剛才的v4,即flag,v5是1或長度,然后看一下大致流程,主要是if(verifyi!=v7)那個地方,verify和v7要相等。memcpy(dest,a1,a2);memcpy()函數(shù)原型void *memcpy(void *dest,const void *src,size_t n);從源src所指的內(nèi)存地址的起始位置開始拷貝n個字節(jié)到目標(biāo)dest所指的內(nèi)存地址的起始位置中,這里

5、就是把a1拷貝到dest。為了便于分析,在IDA中把a1名字改為flag,a2改為length。然后進入了一個循環(huán),循環(huán)22次GetSentence(&v365*i,&wow65*i)當(dāng)i=0,1,2.時傳入的索引為0,65,65*2.然后進入這個函數(shù)2022/9/30其中主要是isalpha()這個函數(shù),作用是判斷參數(shù)是否為英文字母,是就返回1.當(dāng)傳遞進來的是v30,wow0時,就把wow數(shù)組中是英文字母的復(fù)制到v3中,循環(huán)65次,就是能一直計算到v364,然后第二次傳遞進來的參數(shù)是v365,wow65,同理這樣計算。GetSentence()的作用就是去除wow中不是英文字母的成員,保存到v3中。后面還有一個while(v2=64)的循環(huán),意思大概就是一組字符串長度為64,不夠的話用0補齊。2022/9/3010for ( j = 0; j = NUM: break; matrixxy = ord(wowxy)這個函數(shù),初始化一個矩陣,把wow字符串轉(zhuǎn)換成ASCII碼值保存在matrix中2022/9/30這就用了numpy.linalg.solve(),然后輸出結(jié)果if _name_ = _main_ : gen_matrix() result = n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論