11

Defcon CTF Quals 2014 - Nonameyet write up

 4 years ago
source link: http://blog.orange.tw/2014/05/defcon-ctf-quals-2014-nonameyet-write-up.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

2014年5月19日 星期一

Defcon CTF Quals 2014 - Nonameyet write up

記錄一下,

Defcon 是世界駭客  CTF 比賽最盛大的賽事,每年都是每個國家資安社群比拼較勁的地方

前十二強可以進入八月在 Las Vegas 拉斯維加斯舉辦的決賽,在現場進行實際網路攻防的 Attack & Defense CTF 的比賽!

在今年,終於湊齊台灣各方戰力順利打入決賽!

計分板:
2014-05-19_075949.png
這次解了三、四題左右,

這次感想有隊友可以 Cover 真的滿不錯的,討論時可以互相發現對方沒有想到的盲點等

然後第一次嘗試吃 B 群,超有用的 xDDDD

另外這次與以往不同的是,

1. 題目的分類不像以往依 Web, Forensics, Recon, Binary ... 等分類,而是依作者分類

2. 這次比賽共 24 題,幾乎七成都是 PWN 的題目

這讓所有隊伍從一開始壓力就很大,整個 48 小時比賽節奏很慢
(由於第一個解開題目的人有下一道題目的開題權,而 PWN 考驗的是細心的分析以及漏洞精準的利用,因此就算到了最後 12 小時還有約 1/3 的題目沒開)

3. 剩下的題目只有 Protocol 分析、純 Binary 逆向等,並沒有 Forensics

4. Web 題目只有兩題。
(正確來說只有一題,另外一題是看起來是 Web 其實是 PWN )
(不過身為 Web Security 的愛好者,所以就算是扯到 PWN 還是要把它給解出來,因此特地把這篇寫出來記錄一下!)

這次的題目是 "Nonameyet"

這題約在倒數十二小時時出現,題目敘述是這樣的

I claim no responsibility for the things posted here. nonameyet_27d88d682935932a8b3618ad3c2772ac.2014.shallweplayaga.me:80

網址進去是一個 PHP 寫的照片分享以及上傳網站,很容易不難發現任意檔案下載的漏洞

可以從

http://nonameyet_27d88d682935932a8b3618ad3c2772ac.2014.shallweplayaga.me/index.php?page=./../../../../../../../../../../../../../etc/passwd

下載任意檔案

雖然大部份功能都是 PHP 撰寫,但是上傳相片的部份卻是放在

http://nonameyet_27d88d682935932a8b3618ad3c2772ac.2014.shallweplayaga.me/cgi-bin/nonameyet.cgi

這是一個  C 語言所撰寫並編譯成 32 位元 ELF Linux Binary 的可執行檔
(檔案可從這裡下載

整個網站要入侵從 PHP 的視野來看無法拿到寫入的權限以及執行命令的權限,

所能做的只能讀檔,但為了  PWN 他光讀檔是沒有用的,至少要可以執行指令!

所以從純 Web 的路下不了手只好從 cgi-bin 下的那個 nonameyet.cgi下手尋找看看是否有可利用的地方

仔細觀察了 一段 不只一段時間,發現

1. 程式會將從 multipart/form-data POST base 的值當作檔案名稱上傳至 cgi-bin/photos 資料夾下,但是 open 時權限為 420 無法執行

2. 無法直接寫入 PHP 木馬到目錄下

3. 會將上傳後的 POST base 檔名經過 base64 編碼後放在 Cookie 上,其中 base 的內容經過設計後可以 leak memory 洩漏記憶體內容

4. base 的值太長會發生 Heap Overflow 但初步看下去沒有可控之處

5. 有段程式邏輯再處理 base 的內容,尋找他所定義的 TAGS (ex: %Time%, %Date%, %Genr%) 等並取代成相對應於 POST 值的內容

發現有 Heap Overflow 後就一直再 Fuzz 有沒有方法可以控制 EIP 的,
(要去追有點累...XDrz)

嘗試了滿久都失敗最後發現在處理  TAG 時程式去引用時可以去控制一些暫存器內容,經過設計後可以使它產生 Stack Overflow
2014-05-19_202342.png
所以控制好 ecx 以及 esi 接下來讓 mov [ebx], eax 的 ebx 為一個合法的值就可以來到 ret
2014-05-19_203516.png
證明 EIP 可控,接下來就是構造 Exploit 的部份

由於 Stack 可寫,讓整個 Exploit 撰寫變得簡單許多,剩下比較機歪的的就是  ASLR 的部份,

所以利用 ROP 的手法,

將 shellcode 放置在 Cookie 的部份,在利用原本程式中的 getenv 執行後結果 eax 會是我們的 shellcode

最後再找個 call eax 就可以成功執行 shellcode

所以最後構造的 ROP Chain 類似

AAAAAAA... # junk
0x00000000 #  要賦予給 n 的值
AAAAAAA... # junk
0x0804af93 # [ pop ebp / ret ]
0x0804f02c # 可寫的地方,會被設為 ebx 的值
0x08048a80 # .GOT getenv
0x08048cff # [call eax]
0x0804d55a # .RODATA 字串 HTTP_COOKIE


送出如下的 Request
2014-05-19_050831.png
即可拿到反連 shell
2014-05-19_045813.png
The flag is: Angry Rhinoceros. And then I found five dollars.

沒有留言:


Recommend

  • 12

    HITCON CTF 2015 Quals Web 出題心得 orange.tw

  • 16
    • maskray.me 4 years ago
    • Cache

    DEFCON 25 CTF参赛记

    DEFCON 25 CTF参赛记 很荣幸今年成为Tea Deliverers一员参加DEFCON 25 CTF,照例每年写游记。因为错综复杂的原因,kelwin联合blue-lotus、Nu1L、110066以及长亭科技一些实习生组成Tea Deliverers,在Plaid CTF 2017中晋级DEFCON...

  • 10
    • maskray.me 4 years ago
    • Cache

    DEFCON 24 CTF参赛记

    照例每年写游记。原本以为去年的DEFCON 23 CTF是最后一次。 每一张贴纸承载了一段故事,毕业前后的境遇对比。想当年,金戈铁马……

  • 7
    • maskray.me 4 years ago
    • Cache

    SECUINSIDE CTF Quals 2013杂记

    SECUINSIDE CTF Quals 2013杂记 Secuinside CTF Quals 2013Secuinside是韩国人办的信息安全比赛,在ctftime.org上排名很靠前。这次应该算是我第二次参加类似的比赛,不过这类做题形式的还是头一...

  • 9

    HITCON CTF 2015 Quals & Final 心得備份 當初好像沒留底稿只發布在 Facebook 跟烏雲 今天睡醒發現又有人在轉貼這篇,想說留個備份好了XD

  • 8
    • miaotony.xyz 3 years ago
    • Cache

    CTF | 2021 TCTF/0CTF Quals WriteUp

    2021 TCTF/0CTF Quals WriteUp 这是一篇放在草稿箱里已经长草的文章,清理的时候才想起来这篇由于没环境复现,后面一懒就忘记发了…… 噢,喵喵也不记得有没有写完了,就将就发一下吧(摊手

  • 7

    这里将记录着本人复盘 Defcon 30 Quals 中 smuggler's cove 的复盘笔记。 本题是一道 luaJIT 的 pwn 题。 二、环境配置 首先,从提供的 libluajit 文件中获取其版本号:

  • 11

    这里将记录着本人复盘 Defcon 30 Quals 中 constricted 的复盘笔记。 这道题为 boa 项目提供了一个 git diff,要求在应用这个 diff 后对 boa 进行漏洞利用。boa 是一个使用 rust 编写的 javascript 引擎,要想 pw...

  • 8
    • xuanxuanblingbling.github.io 2 years ago
    • Cache

    Google CTF 2022 Quals Hardware 8051 Pwn: Weather

    Google CTF 2022 Quals Hardware 8051 Pwn: Weather ...

  • 5

    defcon-quals 2023 crackme.tscript.dso wp

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK