
执行shellcode的几种方式
发布日期:2021-05-24 13:56:51
浏览次数:14
分类:精选文章
本文共 1628 字,大约阅读时间需要 5 分钟。
汇编与计算器调试实战
汇编成功弹出计算器
下面这段汇编代码可以用来弹出计算器:
#pragma comment(linker,"/section:.data,RWE") // 数据段可读写#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") // 不显示窗口#pragma comment(linker,"/INCREMENTAL:NO") // 指定非增量编译#include "windows.h"void main() { __asm { sub esp, 0x454 // 保存进栈大小 xor ebx, ebx // 保留 eax push ebx // 将 ebx pushed 到栈中 mov eax, 0x6578652e // 'Shell' 字符串 push eax // 'Shell' 可读写 mov eax, 0x636c6163 // 'expl' 字符串 push eax // 'expl' 可读写 mov eax, esp // 从栈中取出结果 push 5 // 设置栈中的参数 push eax // 'expl' 可读写 mov eax, 0x74f0dab0 // WinExec 函数指针 call eax // 调用 WinExec mov esp, 0x450 // 恢复栈状态 }}
找出-local offense address-
下面这两条语句与 call dword ptr [WinExec]
功能相同,可以利用这条语句找出自己机子上 WinExec 地址,然后将 0x74f0dab0
替换成自己机子上的地址:
mov eax, 0x74f0dab0call eax
提取汇编的机器码
将汇编代码编译后可以得到相应的机器码:
unsigned char shellcode[] = "\x81\xEC\x54\x04\x00\x00\x33\xDB\x53\xB8\x2E\x65\x78\x65\x50\"\" "\xB8\x63\x61\x6C\x63\x50\x8B\xC4\x6A\x05\x50\"\" "\xB8\xB0\xDA\xF0\x74\xFF\xD0\"\" "\xBC\x50\x04\x00\x00";
执行shellcode的方法
方法一:通过函数名执行
void Run1() { ((void (*)(void))&shellcode)();}
方法二:通过偏移地址跳转
void Run2() { __asm { lea eax, shellcode jmp eax }}
方法三:相同的另一种写法
void Run3() { __asm { mov eax, offset shellcode jmp eax }}
方法四:使用 emit 插入数据
void Run4() { __asm { mov eax, offset shellcode _emit 0xff; _emit 0xe0; }}
调试总结
代码及调试方法已经成功完成功能,其他三种方法均可调试成功弹出计算器。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年05月02日 04时39分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++ 函数需要有返回值,但非全分支return(RVO)
2019-03-21
python解释器环境问题
2019-03-21
图像质量评估仿真
2019-03-22
uni-app快速导入自己需要的插件
2019-03-22
作为公共组软件工程师如何工作
2019-03-22
uni-app 微信支付
2019-03-22
编写xor_shellcode.py
2019-03-22
Echarts笔记
2019-03-22
Ubuntu 20.04 Docker 安装并配置
2019-03-22
[小技巧]新建txt菜单
2019-03-22
【问答23】Linux移植:如何制作rootfs?
2019-03-22
Java虚拟机详解(五)------JVM参数(持续更新)
2019-03-22
在 eclipse 中将 web 项目部署到 tomcat 服务器上
2019-03-22
php.ini常见配置
2019-03-22
Required request body is missing 错误解决
2019-03-22
ffmpeg结构体(3)-之AVPacket及其相关函数
2019-03-22
iOS关于申请公司开发者账号缴费支付
2019-03-22
寻找两个有序数组的中位数
2019-03-22
java双链表的实现+模拟水浒英雄排行
2019-03-22
android webview加载网页时提示NET::ERR_CACHE_MISS的错误
2019-03-22