xctf_攻防世界 level2 | wp

monkey

  • 本題是一個(gè) c 語(yǔ)言框架的 js執(zhí)行
  • 查看wp的得到提示
    • 這個(gè) 框架內(nèi)置函數(shù)有 os.system(); 所以直接執(zhí)行shell即可
  • 注意點(diǎn):
    • 看到不熟悉的復(fù)雜代碼凝颇,要查看是否有官方文檔

pwn1

  • x64 elf | full Relro , stack canary , nx
  • 功能分析:
    • store | 輸入函數(shù) ,有棧溢出 儡率,只可以覆蓋到ret地址 妖枚,且無(wú)結(jié)尾符,可配合leak
    • get | 輸出函數(shù) 批狐,可以輸出棧上字符串
  • 利用流程:
      1. leak canary | 繞過(guò) stack canary
      1. 覆蓋到ebp 瓮下, leak main函數(shù)的返回地址 , 得到 __libc_start_main + 240 的地址
      1. 覆蓋ret | 因?yàn)橹荒芨采wret地址记劈,所以需要使用 one gadget (用 __libc_start_main 計(jì)算相對(duì)偏移得出)

exp


babyfengshui

  • x86 elf | stack canary , nx
  • 功能分析:
    • 菜單
    • add
      • 分配兩個(gè)chunk , 指定大小的 desc chunk和 存儲(chǔ)desc地址及name字符串的 user chunk
      • 讀入 name | 0xfc
      • 使用 edit 讀入desc
    • delete
      • free *heaparray[desc] | desc
      • free heaparray[desc] | user
      • heaparray[desc] = null
    • show
      • 輸出指定 index 的 name 和 desc
    • edit
      • 輸入長(zhǎng)度 size | 判斷 desc + size < name
        • 即 desc 輸入可到達(dá)的地址要在對(duì)應(yīng)的 user chunk 之前 | 目的 防止堆溢出
      • 進(jìn)行size長(zhǎng)度的輸入
  • 利用過(guò)程:
    • 通過(guò)控制堆塊布局赫冬,使我們可以溢出來(lái)控制其他堆塊的內(nèi)容


      image.png
    • 覆蓋 desc地址為 free@got 從而leak libc
    • 覆蓋 free 為 system , 執(zhí)行delete getshell.

exp


stack2

  • x86 elf | stack canary , nx
  • 功能分析
    • 計(jì)算器
    • 數(shù)字的增刪改查
  • 漏洞點(diǎn)
    - 最開(kāi)始初始化時(shí) 未將 總數(shù)字量限定在 100內(nèi) 浓镜, 配合 scanf 的 “+”輸入 , 可以leak棧地址
    - 修改 數(shù)字時(shí) 輸入的index未檢查劲厌,可以越界 膛薛,造成棧溢出
  • 利用過(guò)程
    - 坑點(diǎn) : hackhere 函數(shù)遠(yuǎn)程不成功 , 無(wú)/bin/bash
    - 思路1 : 利用 棧溢出配合scanf ,向可寫地址(如 bss 段)輸入 /bin/sh\x00 或者 $0\x00 补鼻, 然后執(zhí)行system("/bin/sh\x00")
    - 思路2 : 初始化時(shí)設(shè)置較大的總數(shù)字量 , leak棧地址 哄啄, 然后通過(guò)編輯函數(shù)在棧上輸入 shell命令 ,然后通過(guò)棧溢出 執(zhí)行system(command)

exp


time_formatter

  • x64 elf | stack canary , nx , fortify
  • 功能分析 :
    • 菜單(設(shè)置參數(shù)后命令執(zhí)行)
    • 設(shè)置參數(shù) 格式化字符串
    • 設(shè)置參數(shù) 指定時(shí)間戳
    • 設(shè)置參數(shù) 時(shí)區(qū)
      - 未對(duì)已有 時(shí)區(qū)參數(shù)的情況做處理
    • 輸出 命令執(zhí)行結(jié)果
    • 退出 (可選擇是否 退出)
      • 漏洞點(diǎn) uaf
  • 利用過(guò)程:
    • 利用uaf 和 未對(duì)已有時(shí)區(qū)做處理的機(jī)制 ,在無(wú)限制的設(shè)置時(shí)區(qū)中來(lái)設(shè)置格式化字符串
      • 設(shè)置 格式化字符串 (malloc(n))
      • 設(shè)置時(shí)區(qū) (malloc(n))
      • 退出 (選擇否 风范, 目的是 free上面的兩個(gè)塊)
      • 設(shè)置時(shí)區(qū)(消耗時(shí)區(qū) free的塊)
      • 設(shè)置時(shí)區(qū) (使用格式化字符串free的塊)
    • tip:
        1. strdup 內(nèi)部使用了 malloc
        1. 各個(gè)階段設(shè)置的字符串最好長(zhǎng)度一樣且能滿足getshell的需求

exp


forgot

  • x86 elf | nx
  • 功能 :
    - 1. 輸入姓名
    - 2. 輸入一個(gè)字符串 (可溢出 , 因?yàn)橛胹canf輸入咨跌,只可構(gòu)造一個(gè)地址)
    - 3. 進(jìn)行 n 層檢測(cè) ,不通過(guò)即調(diào)用 第 n 個(gè) 輸出函數(shù) (輸出函數(shù)地址存儲(chǔ)在棧上)
  • 漏洞利用 :
    - 棧溢出覆蓋一個(gè) 檢測(cè)函數(shù)地址為后門地址
    - 觸發(fā)指定的函數(shù) 硼婿, 從而獲得flag

exp


4-ReeHY-main-100

  • x64 elf | nx
  • 功能:
    • 菜單
    • 對(duì)于 exp 的 增刪改 锌半, 沒(méi)有直接給出有實(shí)際意義的show
  • 漏洞點(diǎn):
    • 增刪改過(guò)程中 , index 使用的時(shí) Int類型 , 可使用負(fù)數(shù)index加酵,來(lái)對(duì)size數(shù)組做操作拳喻,從而拓展成堆溢出,并進(jìn)行深層次利用猪腕。
  • 利用過(guò)程
    • 覆蓋size數(shù)組,來(lái)為堆溢出做準(zhǔn)備
    • add 5 個(gè) exp , 最后一個(gè)內(nèi)容為 /bin/sh\x00 ( 作為 system的參數(shù))
    • 配合堆溢出 使用unlink 來(lái)控制 exp數(shù)組內(nèi)容
    • 將 free@got 的值 覆蓋為 puts@plt+6 , 從而可以泄露
      • unlink_addr - 0x10 ( n => free@got => puts@got
      • unlink_addr - 0x10 ( n => unilnk_addr -0x18 => free@got ))
    • 泄露 puts 地址 钦勘, 并且根據(jù)此計(jì)算出 system地址
    • 覆蓋 free@got 為 system
    • free(4) (system("/bin/sh\x00")) getshelll
  • 防御
    - 將 index 的類型設(shè)置為 unsigned int
  • 收獲
    - 了解到了一種新的思路 ( 覆蓋 got表 為 plt + 6)
    - 作用 : 執(zhí)行對(duì)應(yīng)函數(shù)陋葡,目前最大的理解為多出leak的手段

exp


Escape_From_Jail-50

  • 本題為 python 沙箱逃逸
    ,- 關(guān)鍵過(guò)濾 : '.' , import , flag 和 "eval" , "excute" 等命令執(zhí)行 , 看題目源碼中還過(guò)濾了 chr 等字符轉(zhuǎn)換方法
  • 利用到的知識(shí)點(diǎn):
    • getattr 可以獲得 目標(biāo)對(duì)象的指定方法對(duì)象 彻采, 從而繞過(guò) ’.‘號(hào)的過(guò)濾
      • 舉例 : os.system("ls") (error) | getattr(os , "system")("ls") (success)
    • 通過(guò)通配符 繞過(guò)對(duì)flag字符串的過(guò)濾 | 此處 多種方法
  • 獲取flag payload : getattr(os , "system")("cat /home/ctf/????")

pwn2

  • 有點(diǎn)瓜皮了腐缤,一開(kāi)始莫名其妙鉆進(jìn)了死胡同,以為是 house of orange , 就折騰了幾個(gè)小時(shí)肛响。岭粤。。
  • 話說(shuō) 有大佬用 house of orange 的思路做出來(lái)的話 特笋, 想學(xué)習(xí)一波剃浇。。。虎囚。
  • 這道題目主要的利用點(diǎn)
      1. edit 函數(shù)的堆溢出
      1. Print 函數(shù)根據(jù) size數(shù)組中對(duì)應(yīng)的值 輸出對(duì)應(yīng)長(zhǎng)度的字符串
      1. New 時(shí)讀入 時(shí)讀入size長(zhǎng)度的內(nèi)容角塑,不以任何字符為截?cái)喾?(可以雖輸入不可見(jiàn)字符,或者 \x00 \n , 但是要注意被覆蓋的內(nèi)容的作用)
  • 利用過(guò)程
      1. 利用堆溢出 實(shí)現(xiàn) chunk over extend , 從而可以 print 出 下一個(gè) chunk的內(nèi)容
      1. 通過(guò)1 的點(diǎn) 配合一個(gè) unsorted bin , 實(shí)現(xiàn) unsorted bin leak , 從而得到 libc 信息
      1. 通過(guò) 1 的點(diǎn), 修改 freed的 fastbin , 實(shí)現(xiàn) fastbin attack , 從而覆蓋 malloc_hook 為 one_gadget , (不覆蓋 got 表 淘讥, 因?yàn)?Full Relro , 并且開(kāi)啟了 pie , 沒(méi)有獲取到 codebase)
      1. 調(diào)用 new 觸發(fā) one_gadget 從而 getshell

exp


AUL

  • 這道題目是一個(gè) lua 的pwn 圃伶, 考察 對(duì)lua的熟悉程度和理解。蒲列。窒朋。
  • 連上遠(yuǎn)程之后 , help 輸出 一段字節(jié)碼 蝗岖,是 server.luac 的 字節(jié)碼 | 缺少頭部一個(gè)字節(jié)
    • tip :
        1. luac 文件頭 1b 4c 75 61
        1. luac 對(duì)于文件字節(jié)要求嚴(yán)格, 一個(gè)字節(jié)都不能少侥猩。。剪侮。
  • 漏洞點(diǎn):
    • 雖然禁止了一部分關(guān)鍵詞,但是仍然可以調(diào)用內(nèi)部模塊,函數(shù) 拭宁, 官方wp 的方法不夠徹底,adworld 的 wp 中使用 os.execute 可以執(zhí)行系統(tǒng)命令(包括 /bin/sh)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓣俯,一起剝皮案震驚了整個(gè)濱河市杰标,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彩匕,老刑警劉巖腔剂,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異驼仪,居然都是意外死亡掸犬,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門绪爸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)湾碎,“玉大人,你說(shuō)我怎么就攤上這事奠货〗槿欤” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵递惋,是天一觀的道長(zhǎng)柔滔。 經(jīng)常有香客問(wèn)我,道長(zhǎng)萍虽,這世上最難降的妖魔是什么睛廊? 我笑而不...
    開(kāi)封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮杉编,結(jié)果婚禮上超全,老公的妹妹穿的比我還像新娘咆霜。我一直安慰自己,他們只是感情好卵迂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布裕便。 她就那樣靜靜地躺著,像睡著了一般见咒。 火紅的嫁衣襯著肌膚如雪偿衰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天改览,我揣著相機(jī)與錄音下翎,去河邊找鬼。 笑死宝当,一個(gè)胖子當(dāng)著我的面吹牛视事,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播庆揩,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼俐东,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了订晌?” 一聲冷哼從身側(cè)響起虏辫,我...
    開(kāi)封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锈拨,沒(méi)想到半個(gè)月后砌庄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奕枢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年娄昆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缝彬。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萌焰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谷浅,到底是詐尸還是另有隱情杆怕,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布壳贪,位于F島的核電站,受9級(jí)特大地震影響寝杖,放射性物質(zhì)發(fā)生泄漏违施。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一瑟幕、第九天 我趴在偏房一處隱蔽的房頂上張望磕蒲。 院中可真熱鬧留潦,春花似錦、人聲如沸辣往。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)站削。三九已至坊萝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間许起,已是汗流浹背十偶。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留园细,地道東北人惦积。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像猛频,于是被迫代替她去往敵國(guó)和親狮崩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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