亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux CTF逆向入門是什么

發布時間:2021-10-22 11:51:57 來源:億速云 閱讀:145 作者:柒染 欄目:網絡安全

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

1.ELF格式

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

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

Linux CTF逆向入門是什么

2.可執行頭部(Executable Header)

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

Linux CTF逆向入門是什么使用readelf對ELF文件格式進行分析

Linux CTF逆向入門是什么

我們可以使用以下計算方法來計算整個二進制文件的大小:

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計算結果驗證:

Linux CTF逆向入門是什么

3、程序頭部(Program Headers)

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

Linux CTF逆向入門是什么

4、節表頭部(Section Headers)

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

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

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

    5、表(Section)

    5.1 .bss Section

    保存未初始化的數據,比如那些未初始化的全局變量。

    5.2 .data Section

    保存已初始化的數據。

    5.3 .rodata Section

    保存程序中的只讀數據。

    5.4 .text Section

    本節包含程序的實際代碼,邏輯流程。使用readelf查看ELF文件表結構

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

    6、完成簡單的CTF挑戰

    既然已經對ELF文件有所了解了,那找一個CTF題目來試試吧。

    二進制文件下載地址:https://ufile.io/blvpm

    國內下載:www.lanzous.com/i34qg6f

    1、運行這個程序,并傳遞一些隨機字符給它,得到的結果如下:

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

  • Linux CTF逆向入門是什么

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Linux CTF逆向入門是什么

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴彦县| 彭水| 博爱县| 澎湖县| 奇台县| 宕昌县| 元谋县| 永胜县| 华宁县| 扬州市| 乌兰县| 大丰市| 板桥市| 泗水县| 克拉玛依市| 保靖县| 庆城县| 建湖县| 即墨市| 那坡县| 陇西县| 秀山| 彩票| 盐山县| 衡阳县| 许昌县| 武汉市| 常山县| 宁安市| 阿勒泰市| 金寨县| 宣化县| 青河县| 淮阳县| 宁波市| 南宫市| 云阳县| 讷河市| 武城县| 韩城市| 友谊县|