棧溢出中級ROP

學(xué)習(xí)中級ROP:
__libc_csu_init 函數(shù)實現(xiàn)對libc的初始化操作,在 libc_csu_init 中我們主要利用了以下寄存器:利用尾部代碼控制了 rbx姨伟,rbp夺荒,r12技扼,r13剿吻,r14和橙,r15魔招。
利用中間部分的代碼控制了 rdx办斑,rsi乡翅,edi蠕蚜。


image.png

那一道題實踐下:ret2csu


image.png

image.png

棧溢出漏洞癣疟,棧大小為40:
一開始的思路是puts那么多,泄露got表直接剛邪蛔,后來發(fā)現(xiàn)不行,got表地址都是0淤击,原因在這里:
image.png

這里直接設(shè)置為0遭贸,就是不讓你用got表著蛙,沒辦法了猎唁,題目是中級ROP技術(shù)顷蟆,去學(xué)了一波帐偎,回來自己做了下:


image.png

但是發(fā)現(xiàn)get不到shell削樊,就很佛了甸箱,迷......
image.png

下面是看大佬博客才悟到的!查找了一波發(fā)現(xiàn)是setbuf搞的鬼谴蔑?围小!
image.png

這里直接用初始化的函數(shù)代替了,試了下树碱,ok!
image.png

要么是0x600E10肯适,要么是0x600E18,二選一成榜,其他的不行~
image.png

總結(jié):
這道題難在got無法直接用的情況下用中級ROP技術(shù)框舔,找__libc_csu_init中的ROP鏈,R12是關(guān)鍵J昊椤(關(guān)系到函數(shù)調(diào)用)刘绣,這里由于R12的參數(shù)會受setbuf的影響,所以用初始化的參數(shù)去代替纬凤,程序便正常運行了,相當(dāng)于用替身繞過阻攔拇舀,先把參數(shù)放好薄辅,然后再回去找替身調(diào)用就OK了源请。
這里學(xué)到一個技巧良蛮,查看一堆內(nèi)存:tel 0xxxxx

下面上一道中級ROP+mprotect的OJ皮胡,level5:
這里假設(shè)system和execve被禁用甩栈,實際上這種情況很常見殴蹄,利用mprotect和mmap來解決
簡單來說mmap函數(shù)創(chuàng)建一塊內(nèi)存區(qū)域妓蛮,將一個文件映射到該區(qū)域,進程可以像操作內(nèi)存一樣操作文件筋现。mprotect函數(shù)可以改變一塊內(nèi)存區(qū)域的權(quán)限(以頁為單位),這里通常把bss的權(quán)限改為可讀可寫可執(zhí)行,一般來說64位下mprotect(0x600000,0x1000,7)(起始地址,長度,權(quán)限)32位下mprotect(0x804A000烁落,0x400,7)绑洛,長度都是對齊的绑蔫。
一開始檢查程序的保護機制:


image.png

只有堆棧不可執(zhí)行的權(quán)限亡资,可以改got表,沒有棧溢出保護(可能有棧溢出漏洞)
ida分析:
image.png

image.png

明顯的棧溢出漏洞坡垫,通過爆破可以檢測出棧大懈茸俊:136(覆蓋ebp)
image.png

image.png

思路:
這里假設(shè)不能使用system和execve函數(shù)的話代赁,想到是自己生成shellcode兽掰,放在bss段中窖壕,然而bss是不可執(zhí)行的,要改寫那個權(quán)限烦磁,就要用到mprotect和mmap珍逸,64位下我們優(yōu)先使用mprotcet叭爱,需要先求出這個mprotect函數(shù)的真實地址,然后在got表中調(diào)用胧砰,然而原本的got表是沒有的古掏,所以我們要覆蓋已有函數(shù)A的got表地址,這樣下一次調(diào)用A函數(shù)就直接調(diào)用mprotect函數(shù)炼吴。然后我們再覆蓋B函數(shù)的got為bss段的地址,調(diào)用B函數(shù)就可以運行bss段中的shellcode了荣德。還有一個問題童芹,64位下的ROP gadget
發(fā)現(xiàn)沒有三個參數(shù)同時滿足的假褪,想到可以使用__libc_csu_init里面的那個rop鏈(如不懂請看中級ROP技術(shù)),這樣搞清楚了生音,接下來就是敲代碼的事了久锥。
image.png

沒有合適的ROP
image.png

有合適的ROP瑟由,接下來就是寫腳本了:
image.png

中級ROP技術(shù)我們用一個函數(shù)來整理(因為會多次用到)
image.png

最后實現(xiàn)各種操作:
image.png

先本地測試:
image.png

最后遠程getsehll:
image.png

總結(jié):中級ROP適用于64位下的需要3位參數(shù)的函數(shù)青伤,一般在ROPGadget中很難找齊殴瘦,就可以這么用,方便丰歌,同時掌握改寫內(nèi)存權(quán)限和覆蓋got表的能力屉凯,一舉三得!能力得到提升悠砚,繼續(xù)加油。

這里介紹下Brop:
BROP 是沒有對應(yīng)應(yīng)用程序的源代碼或者二進制文件下绑咱,對程序進行攻擊,劫持程序的執(zhí)行流描融。
攻擊條件 :

  1. 源程序必須存在棧溢出漏洞,以便于攻擊者可以控制程序流程薄榛。
  2. 服務(wù)器端的進程在崩潰之后會重新啟動让歼,并且重新啟動的進程的地址與先前的地址一樣(這也就是說即使程序有 ASLR 保護,但是其只是在程序最初啟動的時候有效果)硬猫。目前 nginx, MySQL, Apache, OpenSSH 等服務(wù)器應(yīng)用都是符合這種特性的改执。
    基本思路
    在 BROP 中,基本的遵循的思路如下:
  • 判斷棧溢出長度
    • 暴力枚舉
  • Stack Reading
    • 獲取棧上的數(shù)據(jù)來泄露 canaries衬横,以及 ebp 和返回地址终蒂。
  • Blind ROP
    • 找到足夠多的 gadgets 來控制輸出函數(shù)的參數(shù),并且對其進行調(diào)用噪叙,比如說常見的 write 函數(shù)以及 puts 函數(shù)霉翔。
  • Build the exploit
    • 利用輸出函數(shù)來 dump 出程序以便于來找到更多的 gadgets,從而可以寫出最后的 exploit子眶。
      具體的操作和詳細說明:http://www.reibang.com/p/2bd323e7e97f
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壹店,一起剝皮案震驚了整個濱河市芝加,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌将塑,老刑警劉巖蝌麸,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件来吩,死亡現(xiàn)場離奇詭異,居然都是意外死亡弟疆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門同廉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迫肖,“玉大人攒驰,你說我怎么就攤上這事≌室觯” “怎么了奶段?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呢铆。 經(jīng)常有香客問我蹲缠,道長,這世上最難降的妖魔是什么娜谊? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任纱皆,我火速辦了婚禮,結(jié)果婚禮上派草,老公的妹妹穿的比我還像新娘。我一直安慰自己艺普,他們只是感情好鉴竭,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布搏存。 她就那樣靜靜地躺著,像睡著了一般面氓。 火紅的嫁衣襯著肌膚如雪蛆橡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天呻拌,我揣著相機與錄音睦焕,去河邊找鬼。 笑死猾普,一個胖子當(dāng)著我的面吹牛本谜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溜在,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掖肋,長吁一口氣:“原來是場噩夢啊……” “哼赏参!你這毒婦竟也來了沿盅?” 一聲冷哼從身側(cè)響起籽腕,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤皇耗,失蹤者是張志新(化名)和其女友劉穎揍很,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窒悔,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年阶界,在試婚紗的時候發(fā)現(xiàn)自己被綠了聋庵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祭玉。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岛都,靈堂內(nèi)的尸體忽然破棺而出振峻,到底是詐尸還是另有隱情,我是刑警寧澤烫堤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布哈打,位于F島的核電站,受9級特大地震影響湾盗,放射性物質(zhì)發(fā)生泄漏立轧。R本人自食惡果不足惜躏吊,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一比伏、第九天 我趴在偏房一處隱蔽的房頂上張望疆导。 院中可真熱鬧,春花似錦悠菜、人聲如沸败富。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹦聪。三九已至,卻和暖如春宰僧,著一層夾襖步出監(jiān)牢的瞬間观挎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工造成, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雄嚣,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓鼓鲁,卻偏偏與公主長得像港谊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子燥狰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 0. 引言 如果你學(xué)的第一門程序語言是C語言龙致,那么下面這段程序很可能是你寫出來的第一個有完整的 “輸入---處理-...
    pandolia閱讀 14,049評論 13 27
  • 0x00 前言 Pwn弱雞目代,比賽劃水,只好跟著大佬的博客刷刷一些題目才能維持尊嚴像啼,在刷題目的時候又發(fā)現(xiàn)了一些新姿勢...
    Fish_o0O閱讀 1,537評論 0 6
  • 昨晚可是個難熬的夜晚忽冻,熱此疹,鬧,光亮蝗碎,蚊子。都在這個夜晚降臨慈省。導(dǎo)致睡眠的不好眠菇,躺在床上,汗珠都會撒了歡的奔跑笑窜。還好有...
    xiao錢錢閱讀 243評論 0 0
  • 這是我第一次畫彩鉛登疗。 當(dāng)時,照著老師的講課視頻断傲,一步步畫下來智政。整個過程,耗時近九個小時女仰,終于完成了第一幅彩鉛畫。 ...
    南柯Melody閱讀 227評論 0 2