标签:javascript 安全 ctf
通过了Advanced部分( securityoverridehacking challenge 解题思路汇总——Advanced),下面就进入JavaScript了。总的来说,这个部分比较简单,因为JavaScript是高度可控的东西。也就是说,安全角度而言,JavaScript是不可信的。
这题比较容易让人想多,逛了下hint,发现很简单。观察,首先请求了index.php,然后跳转到了fail.php,并且服务器没有返回302跳转,所以应当是javascript作了跳转工作。于是想办法屏蔽就好了,方法有两种:1)下载一份index的源码,把javascript注释掉,linux下直接wget就可以。2)设置浏览器禁用javascript。改完后就可以看到index.php的内容了,直接通过。
直接找到按钮的源码,<inputtype="button" value="" onclick="javascript:validate(text2.value,‘Admin‘,text1.value,‘75Vd346h‘)">。密码都告诉你了,照着填就好了。
进入页面,会弹出对话框要求输入密码。直接找到源码
<span style="font-size:14px;">var password= 'test'; password=prompt('Please enter the Password!',''); if (password=='4D3dchfa') { window.location.href=''+password+'.php'; }</span>
输入对应密码即可。
一样的套路,换成了一个乘法,计算一下就好。
将乘法升级成代数式了,不过不管计算多么复杂,作为程序员都是不需要担心的,让代码去算就好了。直接将题中的代数式拿出来,写成html即可。
<span style="font-size:14px;"><script language="JavaScript"type="text/javascript"> var pass1= '451'; var pass2= '502181'; var pass3= pass1*pass2; var pass4= pass3-71088; var pass5= pass4%1472; alert(pass5+'175205'); </script></span>
观察脚本,发现有两次验证。如果第二次通过了,就会跳到666.php,然后返回404。于是尝试第一次通过,第二次错误,就成功了。没太懂这题什么意思。
使用MD5进行了加密,网上搜一个解密网站解密一下就可以了。对于弱秘钥的哈希解密现在基本还是不难了,不过如果是一个复杂秘钥的话,解密的成功率就不一定了,尤其是使用了更高级的哈希算法。因此,Hash基本还是算安全的,只要秘钥足够复杂。
观察源码,发现提交后调用了password_submit这个方法。在decipher.js中找到这个方法,同时也找到了key。这题大致是说,“碰到加密不要怕,会有逗逼把密码告诉你的”。
这次用了SHA1加密,不过弱秘钥还是可以解密出来的。同时,也尝试了一下直接修改验证逻辑的方法,但是行不通,不知道是怎么回事,也许做保护了?不过总而言之,在客户端的任何保护基本都是无效的,因为攻击者可以很随意的阅读并修改。
PS:实时解密的动态效果非常酷炫
版权声明:本文为博主原创文章,未经博主允许不得转载。
securityoverridehacking challenge 解题思路汇总——JavaScript
标签:javascript 安全 ctf
原文地址:http://blog.csdn.net/hwz2311245/article/details/47282587