web21
登陆抓包
发现账号密码被加密,这里先解密
发现中间用一个冒号隔开了,发到Intruder模块进行爆破
利用题目所给的字典(重命名为.zip,再解压出来),在Payload1后添加:后缀,对Payload1、2进行base64加密
Payload set 1
Payload set 2
因为这样跑需要跑太多次了,这里已经知道账号就是admin了,直接对密码进行爆破。
发送到重放模块得到flag
web22
flag.ctfer.com,根本打不开
vip.ctf.show
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__);
}
?>
贴个脚本,假设是三位数
<?php
error_reporting(0);
$string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
print (strlen($string)."\n");
for ($a = 0; $a < 62; $a++) {
for ($b = 0; $b < 62; $b++) {
for ($c = 0; $c < 62; $c++) {
$flag = $string[$a] . $string[$b] . $string[$c];
$token = md5($flag);
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 . "\n";
}
}
}
}
}
还有一些两位的像62 ZE 3j 都可以,随意传参进去就是了
web24
<?php
error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
$r = $_GET['r'];
mt_srand(372619038);
if(intval($r)===intval(mt_rand())){
echo $flag;
}
}else{
highlight_file(__FILE__);
echo system('cat /proc/version');
}
伪随机数,当种子不变时,实际生成的随机数也是不变的,所以我们可以直接找到那个数传进去就是了,得到1155388967
<?php
mt_srand(372619038);
echo (mt_rand());
?>
web25
<?php
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');
}
总思路,固定种子数的随机数是一定的,利用第一个随机数找到种子数,然后再用种子数找第二第三个随机数,然后分别给r和token赋值,所以第一步,利用随机数找种子,用到php_mt_seed下载后先make再使用命令,不然报错权限不够啥的
因为刚开始就告诉了版本号所以找相关的,这几个都试了试,最后一个成功
web26
burp抓包直接爆破密码
在Repeater处go一下即可,不过这里如果值全是空的话,查看页面源代码发现function check()
web27
点击录取名单,下载文件得到
并且还有个这个
直接burp就是爆破它的年份
进行unicode解码得到学号,直接登录成功获得flag
web28
where is flag?,看url就是目录,那我们直接brup跑目录,这里还要去掉2.txt
都设置100直接跑就是了最后跑出