shellcode与shellcode生成
( 原文地址:https://0xffff.one/d/344 )
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制之机械码,以其经常让攻击者获得shell而得名——wiki
简单来说就是一段可以执行特定功能(一定情况下)的“字符串”。
shellcode可以自己写汇编生成,比如(假设文件名shell.asm):
1 | [section .data] |
要编译成x86的shellcode的话(不同系统架构生成的shellcode是不同的)可以通过执行下面命令编译:
1 | nasm -felf32 shell.asm -o shell.o |
最后shell.bin里面就是想要的shellcode。
shellcode也可以到网上的数据库去找,比如这个,打开其中一个页面看一下:
里面是这个shellcode的一个C语言的deemo,复制下来编译运行一下(是x86的,所以要编译成32位程序,还要关闭NX保护),运行时可以成功跑出一个shell:
查数据库的话其实还是有一定局限性的,比如我只想运行特定的命令,或者绕过某一些限制。所以还有另一种做法的话是用工具生成,比如有一个叫msfvenom的,可以根据要执行的命令生成shellcode,比如我只想执行"uname -a":
(但其实还是觉得手写的shellcode才是坠吼的 - -)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Tover's Blog!
评论