溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux CTF逆向入門是什么

發(fā)布時(shí)間:2021-10-22 11:51:57 來源:億速云 閱讀:145 作者:柒染 欄目:網(wǎng)絡(luò)安全

Linux CTF逆向入門是什么,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

1.ELF格式

我們先來看看 ELF 文件頭,如果想詳細(xì)了解,可以查看ELF的man page文檔。

Linux CTF逆向入門是什么關(guān)于ELF更詳細(xì)的說明:e_shoff:節(jié)頭表的文件偏移量(字節(jié))。如果文件沒有節(jié)頭表,則此成員值為零。sh_offset:表示了該section(節(jié))離開文件頭部位置的距離

Linux CTF逆向入門是什么

2.可執(zhí)行頭部(Executable Header)

ELF文件的第一部分是可執(zhí)行文件頭部(Executable Header),其中包含有關(guān)ELF文件類型的信息。ELF文件在各種平臺(tái)下都通用,ELF文件有32位版本和64位版本,其文件頭內(nèi)容是一樣的,只不過有些成員的大小不一樣。它的文件圖也有兩種版本:分別叫“Elf32_Ehdr”和“Elf64_Ehdr”。這里以32位版本為例:

Linux CTF逆向入門是什么使用readelf對(duì)ELF文件格式進(jìn)行分析

Linux CTF逆向入門是什么

我們可以使用以下計(jì)算方法來計(jì)算整個(gè)二進(jìn)制文件的大小:

size = e_shoff + (e_shnum * e_shentsize)size = Start of section headers + (Number of section headers * Size of section headers)size = 137000 + (29*64) = 138856計(jì)算結(jié)果驗(yàn)證:

Linux CTF逆向入門是什么

3、程序頭部(Program Headers)

程序頭部是描述文件中的各種segments(段),用來告訴系統(tǒng)如何創(chuàng)建進(jìn)程映像的。

Linux CTF逆向入門是什么

4、節(jié)表頭部(Section Headers)

節(jié)表頭部(Section Headers)包含了描述文件節(jié)區(qū)的信息,比如大小、偏移等,但這些對(duì)二進(jìn)制文件的執(zhí)行流程來說并不重要。

  • sections 或者 segments:segments是從運(yùn)行的角度來描述elf文件,sections是從鏈接的角度來描述elf文件,也就是說,在鏈接階段,我們可以忽略program header table來處理此文件,在運(yùn)行階段可以忽略section header table來處理此程序(所以很多加固手段刪除了section header table)。從圖中我們也可以看出, segments與sections是包含的關(guān)系,一個(gè)segment包含若干個(gè)section。

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么

    5、表(Section)

    5.1 .bss Section

    保存未初始化的數(shù)據(jù),比如那些未初始化的全局變量。

    5.2 .data Section

    保存已初始化的數(shù)據(jù)。

    5.3 .rodata Section

    保存程序中的只讀數(shù)據(jù)。

    5.4 .text Section

    本節(jié)包含程序的實(shí)際代碼,邏輯流程。使用readelf查看ELF文件表結(jié)構(gòu)

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么

    6、完成簡(jiǎn)單的CTF挑戰(zhàn)

    既然已經(jīng)對(duì)ELF文件有所了解了,那找一個(gè)CTF題目來試試吧。

    二進(jìn)制文件下載地址:https://ufile.io/blvpm

    國內(nèi)下載:www.lanzous.com/i34qg6f

    1、運(yùn)行這個(gè)程序,并傳遞一些隨機(jī)字符給它,得到的結(jié)果如下:

  • Linux CTF逆向入門是什么2、接著使用strings 查看一下程序的字符串,看是否能找到有用的信息

  • Linux CTF逆向入門是什么

    我們可以看到 “%c” 是打印flag的字符串,數(shù)量是15個(gè)。

    3、我們可以查看“.rodata ”部分的偏移量,可以更好的查看這些字符

  • Linux CTF逆向入門是什么4、檢查符號(hào)表(Symbols)nm命令查看庫文件的符號(hào)

  • Linux CTF逆向入門是什么說明:-D或–dynamic:顯示動(dòng)態(tài)符號(hào)。該任選項(xiàng)僅對(duì)于動(dòng)態(tài)目標(biāo)(例如特定類型的共享庫)有意義我們可以發(fā)現(xiàn) printf, puts, sprintf, strlen functions.這些函數(shù)未定義。5、跟蹤系統(tǒng)調(diào)用(System Calls)我們可以使用strace之類的工具去跟蹤程序的系統(tǒng)調(diào)用

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么為了更好地理解,我們可以使用ltrace解碼C++來跟蹤函數(shù)名所做的庫調(diào)用。我們可以看到正在進(jìn)行字符串長度檢查。

  • Linux CTF逆向入門是什么為了更好地理解,我們可以使用ltrace解碼C++來跟蹤函數(shù)名所做的庫調(diào)用。我們可以看到正在進(jìn)行字符串長度檢查。

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么Linux CTF逆向入門是什么在這個(gè)二進(jìn)制文件中,符號(hào)沒有被剝離,因此我們可以看到函數(shù)名稱,這使得它更容易理解。如果你可以閱讀匯編代碼,你可以很清楚的知道發(fā)生了什么。如果不能閱讀匯編代碼,讓我們做一些實(shí)時(shí)調(diào)試,并嘗試更好地理解。7、實(shí)時(shí)調(diào)試這里我們使用GDB-Peda進(jìn)行實(shí)時(shí)調(diào)試我們首先檢查二進(jìn)制文件中的函數(shù)。我們可以看到main,comp_key等函數(shù)

  • Linux CTF逆向入門是什么調(diào)試方法:首先使用 break main 跳到主函數(shù),使用n來step和ni來執(zhí)行每條指令

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么讓我們來看看程序的邏輯,程序首先嘗試比較參數(shù)的數(shù)量。它存儲(chǔ)在ecx寄存器中并移動(dòng)到esi,它用于將值與0x2進(jìn)行比較

  • Linux CTF逆向入門是什么其偽代碼看起來是這樣的:

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么其代碼是這樣的:

  • Linux CTF逆向入門是什么如果你檢查這個(gè)代碼,可以看到有一個(gè)循環(huán)正在迭代我們輸入字符串的每個(gè)字符。

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么它到底循環(huán)了多少個(gè)字符?通常來說,我們的密碼長度為7個(gè)字符。

  • Linux CTF逆向入門是什么Linux CTF逆向入門是什么代碼看起來是這樣的:

  • Linux CTF逆向入門是什么可以看出,如果7個(gè)字符總和等于801,即可得到flag。您可以使用任何字符,只要總和是801即可。檢查完成后,調(diào)用comp_key函數(shù)并打印出flag。比如這樣:114 * 6 + 177 = 801我們找到數(shù)字對(duì)應(yīng)的ASCII字符114是 ‘r’ 117 是 ‘u’。

  • Linux CTF逆向入門是什么然后我們將字符作為輸入,執(zhí)行程序即可得到FLAG

  • Linux CTF逆向入門是什么

關(guān)于Linux CTF逆向入門是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI