存档

文章标签 ‘GetPC’

ShellCode常用的GetPC方法

2012年11月24日 1 条评论

GetPC,也即Get Program Counter,取得程序计数器的值,在x86下就是GetEIP了,其作用是在进程的内存空间中得到当前的EIP的值,通常用于需要对代码自身进行操作的场合下,比如自解码和自修改代码(更一般的来说常见于病毒、溢出攻击代码等,也称之为代码重定位技术)。因为在x86下无法直接操作EIP寄存器,所以需要一些特殊的方法来获取EIP寄存器的值。
1. CALL GetPC
最简单的GetPC方法是使用call指令,之前的文章有提到过(http://www.programl[......]

继续阅读

一个字节毁掉一段ShellCode

2012年11月20日 6 条评论

暂时告别了一段忙碌的生活,博客还是得打理一下……今天在测试一个FTP服务器程序时,发现仅仅一位一个特殊的字节而破坏了整段ShellCode,调了好久才找到原因,就想写篇博客记录下,顺便感慨下调试的不易。

场景:已经写好了一个Exploit针对此FTP服务器程序并成功绑定一个TCP Shell,现在需要替换为download_exec(下载并执行)ShellCode,于是使用Metasploit生成了一段download_exec的ShellCode,URL为http://localhost/test.exe,可是测试的时候被测程序总是悄然退出,用Ollydbg附加、在0x7FFA4512(jmp esp 是我用来做跳转的)处下硬件执行短点,再次出发溢出条件,发现ShellCode全然面目全非了:[......]

Win32 bind port shellcode(4444 tcp) 399 bytes

2012年10月27日 5 条评论

Win32 bind port shellcode(4444 tcp) 399 bytes,验证可用,执行后通过telnet到目标机器4444端口即可。以下代码请谨慎执行,测试完注意关闭端口!!!

另外,对于一些需要网络发送数据的场景,可能要求数据中不得函数NULL字符(0×00),下面的代码是NULL Free的,其中的代码重定位(GetPC)使用了浮点指令集:

00C67000 D9 EE fldz
00C67002 D9 74 24 F4 fnstenv [esp-0Ch]
00C67006 5B pop ebx
测试漏洞利用的时候,总是不成功,调试发现fldz/fnstenv指令会破坏栈顶数据,所以建议在ShellCode前填充适当的NOP指令。[......]