0x02 streamgame1
0x03 streamgame2
0x04 Three hits
0x01web签到
md5碰撞 查看源码后发现:
上传两个个md5加密后为0e的字符串试试,但除了返回success就什么反应了
继续看这样不行估计就是md5碰撞了(生日攻击)
看雪有一个md5碰撞攻击器
http://www.freebuf.com/articles/web/16806.html(含详细教程)
按照上面的使用教程生成两个文件
可以写个小脚本提交
也可以打开文件后url编码提交,即构造:
param1=%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%87%12F%7E%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25qAZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BD%F2%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E2%B4%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW%7E%E8%CET%B6p%80%A8%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%2Bo%F7%2Ap ¶m2=%D11%DD%02%C5%E6%EE%C4i%3D%9A%06%98%AF%F9%5C%2F%CA%B5%07%12F%7E%AB%40%04X%3E%B8%FB%7F%89U%AD4%06%09%F4%B3%02%83%E4%88%83%25%F1AZ%08Q%25%E8%F7%CD%C9%9F%D9%1D%BDr%807%3C%5B%D8%82%3E1V4%8F%5B%AEm%AC%D46%C9%19%C6%DDS%E24%87%DA%03%FD%029c%06%D2H%CD%A0%E9%9F3B%0FW%7E%E8%CET%B6p%80%28%0D%1E%C6%98%21%BC%B6%A8%83%93%96%F9e%ABo%F7%2Ap
POST上传即可
0x02 streamgame1
下载下来是一个加密源码,逐步分析
开始以为flag是一个第三方库但其实安装后没什么用
看下面三行,知道了字符串的开头结尾,总共25字符
继续分析lfsr加密函数
R=int得知到flag是个字符串是一个01的组合计算的话也就是19个01的组合
R是一个整型mask也是一个整型
打开一个key的文件以二进制追加形式,for循环循环12次在里面把R和mask当作参数调用加密函数,tmp变量和i变量都用到一个位移运算,所以感觉写不出逆向算法解密
每次循环的到tmp密文写进key这个文件,所以采取直接爆破,因为R变量是一个19位二进制数,所以穷举数量级应该也不大,R的范围是0-524287,在算出每个变量的密文再与key中的密文作比较,如果相等就得到R的值即flag
解密脚本
0x03 streamgame2
在这第二个密码题中其实思路跟1是一样的,只是flag长度比1多两位,修改R值爆破范围即可,不到一个小时爆出,附上脚本
0x04 Three hits
利用注册时的age可以在profile.php中进行二次注入,其中age要求必须是数字类型的,我们此处可以是用hex值来绕过。因为解题过程中有大量注册和登录操作,所以使用如下脚本,简化操作:
也可以手动注入