爆破
web21:
打开burp进行抓包
通过对密码进行解析。得知密码是由拼接而来 admin:1
选择要攻击的参数 攻击方式。
选择payload方式 。。添加参数 1,2,3。账号 分隔符 密码
选择加密方式。添加buse64.去掉url字符。不然buse64后,会在url加密过一次,从而导致攻击不成功
进行攻击。获取账号 密码
web22: 域名爆破 失效
**web23:**代码爆破
<?php
error_reporting(0);
include('flag.php');
if(isset($_GET['token'])){
$token = md5($_GET['token']);
if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
echo $flag;
}
}
}else{
highlight_file(__FILE__);
}
?>
说明
md5算出的值是32位的16进制数
substr($token, 1, 1)是将token的字符串的第二个字符开始,取一个字符
intval 函数用于将变量转换为整数
echo intval("42"); // 输出 42
echo intval("42abc"); // 输出 42
echo intval("abc42"); // 输出 0
第一个判断条件是要求md5字符串第2个字符,第15个字符,第18个字符相等
第二个判断条件是第2个字符,第15个字符,第18个字符转换为整数后相加的和与第2个字符的整数相除的结果(3)与最后一个字符的整数相等 1+1+1/1=3
使用如下脚本爆破:
import hashlib
for num in range(1,10000):
md5_value = hashlib.md5(str(num).encode('utf-8')).hexdigest()
if md5_value[-1] == '3':
if md5_value[1:2] == md5_value[14:15] and md5_value[1:2] == md5_value[17:18]:
print(num)
尝试传入url?token=422,得到flag
web24: 随机数
mt_srand(372619038);
这行代码使用 mt_srand 函数设置Mersenne Twister随机数生成器的种子为372619038。设置种子后,每次调用 mt_rand 都会生成相同的随机数序列。
intval(mt_rand())
将生成的随机数转换为整数。 找个在线工具 重新执行一下 就可以
web25:逆向
error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
$r = $_GET['r'];
mt_srand(hexdec(substr(md5($flag), 0,8)));
$rand = intval($r)-intval(mt_rand());
if((!$rand)){
if($_COOKIE['token']==(mt_rand()+mt_rand())){
echo $flag;
}
}else{
echo $rand;
}
}else{
highlight_file(__FILE__);
echo system('cat /proc/version');
}
要满足条件if((! r a n d ) ) ,则 rand)),则 rand)),则rand=0;则r=1145712560,为第一次生成的随机数。
每次调用 mt_rand 都会生成相同的随机数序列。然后就可以去逆向了(不是)。
网上搜了个php_mt_seed可以逆向php的伪随机数。
https://www.openwall.com/php_mt_seed/ 下载完成之后 丢到kali去。按步骤操作,得到相应的数据 。一个一个选择,根据php的版本进行选择,这里先选择4034207346
./ 一般用于执行当前目录下的可执行文件
chmod 授权
make 是一个构建工具,通常用于编译和构建 C、C++ 等编程语言编写的项目
time 是一个命令,用于测量命令或程序的执行时间
已知seed为4034207346,根据代码分析,要输出flag需要cookie中的token值等于第二次和 第三次mt_rand()之和,通过下面的脚步代码算出token。
web26:暴力破解
打开页面啥也没有 抓包看一下
重放一下 就可以看到答案
web27:暴力破解
点击录取名单 下载相应的文件 。点击学籍名单查询系统,
通过Burp抓包 获取信息,弥补缺失 的日期信息
获取到相应的日期
进行登录
成功获取答案
web28: 暴力破解 先攻击看看
抓包之后 去掉2.txt就行 前面的/ 不能去掉,去掉的话 根本扫不出来
在过滤那输入ctfshow 不然一个个查太麻烦
这个爆破可能不是很全,没有验证码爆破等,可能后面会有吧