[BUUCTF-pwn]——others_shellcode
[BUUCTF-pwn]——others_shellcode
- 題目地址: https://buuoj.cn/challenges#others_shellcode
peak 小知識
寫這道題之前, 大家首先要了解, 想要獲得一個shell, 除了system("/bin/sh") 以外, 還有一種更好的方法, 就是系統調用中的 execve("/bin/sh", NULL, NULL)獲得shell。我們可以在 Linxu系統調用號表 中找到對應的系統調用號,進行調用, 其中32位程序系統調用號用 eax 儲存, 第一 、 二 、 三參數分別在 ebx 、ecx 、edx中儲存。 可以用 int 80 匯編指令調用。64位程序系統調用號用 rax 儲存, 第一 、 二 、 三參數分別在 rdi 、rsi 、rdx中儲存。 可以用 syscall 匯編指令調用。
言歸正傳,我們來看看這道題
先checksec一下, 沒什么32位程序,開啟了NX保護
在IDA中,看蒙了。之前沒遇到過。連個輸出都沒有,注意到getshell函數上面的result變量 旁邊的 eax。函數名叫getshell肯定是暗示在這里進行獲得shell的。
在匯編中看看, 嘶發現有 int 80 指令。eax = 0FFFFFFFFh - 0FFFFFFF4h = 11。看上面函數也發現result也就是eax的值就是11
看下Linxu系統調用號表 11對應的就是 execve 可是ebx ecx edx的參數怎么辦。
秉承著走一步寫一步的想法。一運行竟然可以, 孩子也是吐了。完全不知道這道題考的什么, 不過多執行試試這個習慣還是很好的,就比如這次, 不就莫名其妙成功了嘛。
exploit
from pwn import * p = remote('nde3.buuoj.cn', 28531) p.interactive()希望能夠找到ebx ecx edx寄存器對應參數的大佬, 可以在評論里面指教一下。我個人覺得pwndbg肯定可以查看,但是我的pwndbg最近有點問題。看看大佬們有沒有其他方法。
總結
以上是生活随笔為你收集整理的[BUUCTF-pwn]——others_shellcode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统调用号表
- 下一篇: [BUUCTF-pwn]——pwn2_s