首页
论坛
专栏
课程

[原创]crackMe by simpower91

2018-10-20 18:28 2404

[原创]crackMe by simpower91

2018-10-20 18:28
2404
团队名称:战神伽罗
团长QQ:35769382
参赛题目:crackMe by simpower91
答案:kanxueCTF2018bySimpower91


设计说明:
1.首先将密码封装在javascript中,通过javascript将自身进行加密。
2.通过简单的汇编代码变形算法 (加减固定数值) ,将javascript代码编译到可执行区域,通过指令跳转和对硬编码的变形对javascript代码进行恢复。
3.将恢复的代码注入到IE内核当中,并显示出来,没有壳。

破解思路
1.静态文本编辑器可以看到一部分javascript代码。首先用od加载,搜索字符,可以看到一部分javascript代码,把代码复制出来之后发现不完整,启动起来之后,会将主要代码擦除。


2.然后在这附近下断点,往下滚动,可以看到函数内部有一些奇怪的指令变形,这就是存放剩余javascript的地方了:

3.在变形指令跳回处下断,单步跟踪之后,找到javascript的剩余部分:
发现jmp下面有好多很大的数字,怀疑是字符串做了变形,反复对比结尾(上一张图片),结尾有个 7F 00,估计就是字符串,于是将这段数据每个字节-7F,果然得到了ASCII码,就是剩下的javascript代码。
跟前半部分组合起来就是:
eval(function(s,p,a,c,k,e,d){for(i=0;i<k.length;i++)k[i]=k[i].replace(s, '');e=function(c){eval(document.write(String.fromCharCode(13)));return(eval(c<a)?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$$$','8 4() {    1 = 6.3.e.f;    9 (1 == "b") {        2("5!")    } 7 {        2("g!<" + 1 + "> a d c 0 ;-)")    }}',62,17,'GUID$$$@a$$$@alert$$$@all$$$@ckpswd$$$@congratulations$$$@document$$$@else$$$@function$$$@if$$$@is$$$@kanxueCTF2018bySimpower91$$$@my$$$@not$$$@pswd$$$@value$$$@wrong$$$'.split('@'),0,{}))

4.javascript解密:

用记事本编写解密代码:

<textarea id="enc"></textarea><br>

<input type=submit onclick="jsdecode()">

<script>

function jsdecode() {

    var code = enc.value;

    code = code.replace(/^eval/, '');

    decode = eval(code);

    document.write(decode);

}

</script>

保存为html文件,然后用浏览器打开,即可解密。


得到真正的javascript代码:
function ckpswd() {
    a = document.all.pswd.value;
    if (a == "kanxueCTF2018bySimpower91") {
        alert("congratulations!")
    } else {
        alert("wrong!<" + a + "> is not my GUID ;-)")
    }
}

密码就在里面了。



题目运行效果:





[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

最后于 2018-12-21 12:04 被kanxue编辑 ,原因:
上传的附件:
上一主题 下一主题
最新回复 (2)
netwind 13 2018-11-30 17:10
2
0
初审合格
KevinsBobo 4 2018-12-21 12:30
3
0
大哥,能否讲讲调用解密js函数前那段代码的设计思路
游客
登录 | 注册 方可回帖
返回