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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[BUUCTF-pwn]——xman_2019_format

發布時間:2024/4/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BUUCTF-pwn]——xman_2019_format 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[BUUCTF-pwn]——xman_2019_format

本小白終于想明白了, 第一個寫出來這道題的人, 好厲害感覺.

腦袋嗡嗡的, 這道題讓我想了一個上午竟然, 果然適當睡眠有助于思考, 睡一覺就想出來了.

也看過幾個題解不過,雖然解法相同,但是基本都木有將清楚, 每一步的原因是什么都木有說清楚. peak不才, 在這里試著詳細說明一下, 畢竟想了一個上午的東西,還是有必要好好總結一下的 .

peak小知識

  • ALSR : 你們肯定都知道,不就是地址隨機化嘛有什么, 但是這道題如果你們不清楚具體的原理很有可能寫不出來. 對于32位的線 性地址來說,高四位為全局頁表,如果用隨機產生會影響對高位內存的映射能力,會產生大 量的內存碎片,低12位要考慮頁對齊,因而只能有16位來作為偏移量 . 可能不清楚, 舉個例子 0x080485AB地址 它只能0x10 0x10的修改. 同時高四位不會被修改, 同時由于頁對齊 , 也就意味著只有A 會被隨機化. 64位類似.
  • %{offest}$n : 大家也不陌生, 就是格式化字符串修改. 可是你真的知道嘛, 有的只是套用公式, fmtstr_payload, 或者直接不明不白就用 n hn hhn 寫了
    其實如果有 A->B->C. 那么如果 % $n指向A的話, 實際修改的是C.

思路

前面 嗶嗶嗶那么多開始直奔正題
首先這題給了我們一個backdoor, 后門函數, 地址為0x080485AB我們只需要將返回地址修改為這個就好

沒有棧溢出, 只有兩個格式化字符串漏洞, 前面有一個buf, 輸入的buf '|'之前的是第一個printf, 之后的是第二個printf

我們不能直接修改 eip,但根據剛才的peak小知識, 我們可以間接修改eip,
利用ebp鏈, 使得一個地址指向儲存eip的地址就好

第一步找到偏移偏移為10, 第一步將0xffa44088改為0xffa4403c也就是指向eip的地址, 不過由于地址隨機化,只需要改最后兩位保證最后為C就好, 我這里是0x0C, 當然 1C、2C、3C…都可以

第二次計算偏移,找到上一級的ebp, 利用格式化字符串將后門函數的地址寫入. 其實只需要修改低位就好, 高位同一個程序基本都是相同的.

可能還是有點迷糊

A->B->C 利用這個將C修改為了指向eip的地址.

B->C->D 此時C是指向eip的地址,那么D不就是eip嘛

不過由于地址隨機化, 所有我也不知道是0C還是什么C, 多循環幾次就好

exploit

from pwn import * while 1: #p = process("./xman_2019_format") p = remote("node3.buuoj.cn",26721)#gdb.attach(p, 'b printf')payload = '%12c' + '%10$hhn|' payload += '%34219c' + '%18$hn' p.sendline(payload) try: p.interactive() except: p.close()

總結

以上是生活随笔為你收集整理的[BUUCTF-pwn]——xman_2019_format的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。