WEB:
0x00 easyweb
admin用户是没有密码的,但是当密码为空时,网页会自动填写。用hackbar构造空密码post,服务器返回cookies,浏览器保存,刷新获得flag
CRYPTO:
0x01 flag_in_your_hand
输入token调用js加密,比较。正确返回flag。加密方式是md5,返回的flag是一串base64。
Js中check方法,暴露了数组,python还原。输入
0x02 oldstreamgame
流密码,32位mask,8位16进制flag。2^32爆破不可取。读脚本。
1.主函数第一个循环即写入100字节,第二个循环通过将tmp循环左移+output(^output)变为8位,写入文件。
2.Lfsr函数输入(R,mask),输出(output,lastbit)。R初始为flag,长32位,每经过一次函数,R=output=(R*2)%2**32+lastbit即循环左移末尾补上lastbit。mask长32位不变。lastbit长度1位,有点类似于差分曼彻斯特编码,i=R&mask,当i的末位为1时会发生跳变,为0时保持原数。在这个发过程中发现,当i的1为奇数时为lastbit为1,为偶数时为0。
总结出这些规律后,不难发现key只有前32字节是直接与flag有关。后面的字节是后来补上的lastbit加密而成。所以利用这一特点,循环右移,计算奇偶,算出flag。
贴出解密脚本和验证
Misc:
0x03 picture
Binwalk -eM 扫出一段数据,打开里面是base64,python解码保存为一个文件
Winhex查看16进制,发现有点像zip压缩包,但头部为4B50,所以修改头部和后缀打开。
根据注释获得密码 integer division or modulo by zero
打开code,发现为uuencode,解码
0x04 验证码
输入32位token与验证码获得flag