@TOC
昨天晚上分别开了我相识已久的女友,再度回到了单身狗身份,在这个双休的早上,电脑上看完了昨天还未看完的《银河护卫队1》,百无聊赖的打开了某一个网站,想找找是否有啥好玩的东西,这一看,2个小时就这么没了。。。
登录界面在账号处,如果输入系统存在的账号,则用户名会返回对应的结果,没有则不返回。抓包看一下。
输入admin,返回了admin。这里我注意到一个参数 SQL_WHERE。那这里我们大胆猜测一下,是不是有可能后面就是跟的要查询的账号名呢,只是这里做了相应处理。需要注意的是,值的最后面有两个%3D
,这里懂的师傅,已经猜到是base64编码的,我当时也是这样想的,就拿去处理一下。
密文:
NGFkMzRkZWEyYjgxYzcyMWY0YTg3YTEzYzU5MzJmNTY5YzA3MWVjZDE2MGM3ZjIzZDNmYzliNDg1NTlmZGMxZg%3D%3D
第一步处理,UrlDecode解码
NGFkMzRkZWEyYjgxYzcyMWY0YTg3YTEzYzU5MzJmNTY5YzA3MWVjZDE2MGM3ZjIzZDNmYzliNDg1NTlmZGMxZg==
第二步处理,base64解码
4ad34dea2b81c721f4a87a13c5932f569c071ecd160c7f23d3fc9b48559fdc1f
这也看不出是个啥加密呀,就想着能不能去F12里找找思路。。
打开网站之后按了下F12,看到以下截图,当中的jsBase64.js文件让我有了极大的兴趣,因为我看到了 key 和 iv ,心里咯噔一下,这不是洞就来了嘛。少说也是个配置文件泄露嘛。
想着,既然我都知道这里是aes
加密了,还暴露了key
和iv
,那不是马上就可以反推出刚刚的密文是什么了嘛!咱们说干就干,就将这段代码复制到了新文件中,准备传入明文admin来试试看能不能加密出刚刚的密文来。
突然惊醒,js我不会啊,不知道咋穿参进去,而且电脑也没有运行代码的环境,思来想去,js我不会,但是我会点python呀。
网上参考了点python的aes解密,整了一个出来。
啪的一下很快啊,当时就给了我一个结果 AND LOGID=‘admin’
。好家伙,这不是连着查询语句一起写这了嘛,搞不好这里还有SQL注入呢!!
秉着严谨的态度,我再次搞了三条高级测试语句加密之后传过去,探探虚实。
1.AND LOGID='test'
2.AND LOGID='test' AND 1=1
3.AND LOGID='test' AND 1=2
1.1944b419abc5540fbed8e886ea1d68dcdda71cc9b1da8daba6096208727fa36e
2.1944b419abc5540fbed8e886ea1d68dc8c937b7e0c859960291e590322549066
3.1944b419abc5540fbed8e886ea1d68dcfdc8146dc3691809e7b75e7224b6451d
像前面一样,先 base64编码,在 UrlEncode编码。
芜湖,起飞。这里SQL注入已经妥了。但是这里我应该怎么去弄点库名来证明呢,第一个想到sqlmap,但是sqlmap的自带tamper是没有这样复杂处理的脚本,看来还是只能自己写了。
先打开了一个自带的脚本(apostrophemask.py),看看人家是咋写的。
为了让数据可以直接用,这里需要将 payload 做三次处理:
AES加密——Base64编码——UrlDecode解码
哎嘿,跑出来了。武林中人讲究点到为止,关掉看鬼灭之刃去了。