爆破
web21
先输入admin、admin,抓包,发现输入的内容base64了,而且中间用:
隔开,提供了字典,所以直接爆破密码,注意最下面的url编码不要勾上,不然会有编码问题,爆不出来。
web22
子域名爆破,现在题目无了。
子域名收集方法
-
查询 DNS 解析记录
如 MX CNAME 记录,使用 nslookup 命令就可以查询这些信息。查询DNS记录的方法,通过域名的NS服务器可以用
ls http://domain.com
的方式查询所有域名相关记录,但是可惜,现在的DNS服务器大都禁用了这个功能以提高安全性。 -
爬虫提取子域名
-
搜索引擎
搜索引擎提供了一些高级搜索指令,site 就可以查询相关的域名,其实搜索引起收录的网页也是通过爬虫来爬取的。
-
站点配置文件
crossdomain.xml,跨域策略配置文件 -
工具
- subDomainsBrute、subdomain3、OneForAll
-
在线扫描平台
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__);
}
按代码要求,传入的token的md5第1、14、17位一样,最后一位是3,用python构造这样的token然后get传过去即可
web24
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');
}
php的mtrand设置了seed,找一个php编译器在线跑一个结果get传过去就行
<?php
mt_srand(372619038);
echo(mt_rand());
?>
//php7+
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');
}
还是和随机数相关的,先传r=0
,得到状态,使用https://www.openwall.com/php_mt_seed/进行爆破,获得初始seed和cookie值,
└─$ time ./php_mt_seed 408343467
Pattern: EXACT
Version: 3.0.7 to 5.2.0
Found 0, trying 0x30000000 - 0x33ffffff, speed 383.5 Mseeds/s
seed = 0x31cdbb82 = 835566466 (PHP 3.0.7 to 5.2.0)
seed = 0x31cdbb83 = 835566467 (PHP 3.0.7 to 5.2.0)
Found 2, trying 0x88000000 - 0x8bffffff, speed 384.1 Mseeds/s
seed = 0x8ad9414c = 2329493836 (PHP 3.0.7 to 5.2.0)
seed = 0x8ad9414d = 2329493837 (PHP 3.0.7 to 5.2.0)
Found 4, trying 0xfc000000 - 0xffffffff, speed 384.7 Mseeds/s
Version: 5.2.1+
Found 4, trying 0x12000000 - 0x13ffffff, speed 3.6 Mseeds/s
seed = 0x13192b1c = 320416540 (PHP 5.2.1 to 7.0.x; HHVM)
Found 5, trying 0x30000000 - 0x31ffffff, speed 3.6 Mseeds/s
seed = 0x31b49d5c = 833920348 (PHP 7.1.0+)
Found 6, trying 0x40000000 - 0x41ffffff, speed 3.6 Mseeds/s
seed = 0x41491c88 = 1095310472 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x41491c88 = 1095310472 (PHP 7.1.0+)
Found 8, trying 0x70000000 - 0x71ffffff, speed 3.6 Mseeds/s
seed = 0x70ba20f8 = 1891246328 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x70ba20f8 = 1891246328 (PHP 7.1.0+)
Found 10, trying 0x82000000 - 0x83ffffff, speed 3.5 Mseeds/s
seed = 0x82283a35 = 2183674421 (PHP 7.1.0+)
Found 11, trying 0xfe000000 - 0xffffffff, speed 3.5 Mseeds/s
Found 11
real 20m27.640s
user 20m27.158s
sys 0m0.351s
然后用php每个seed试一下输出对应的r和cookie,最后发包过去
<?php
mt_srand(833920348);
echo mt_rand()."\n";
echo mt_rand()+mt_rand();
?>
GET /?r=408343467 HTTP/1.1
Host: f98b5f48-5c35-44b6-a481-caffac2deab0.challenge.ctf.show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Length: 0
Cookie:token=2012680821
Upgrade-Insecure-Requests: 1
web26
进去抓一个发登录信息的包,可以看到传过去的数据,直接把所有的数据清空就可以得到flag。
web27
进去有一个用户表,下下来发现有名字和部分身份证号,身份证号少年月日,在用户查询中输入这两个信息,会有一个弹窗出来,那就抓这个弹窗的包,抓到之后,用bp爆破身份证中间的年月日。
得到的msg解unicode编码得到:
恭喜您,您已被我校录取,你的学号为02015237 初始密码为身份证号码
然后照着输入登录就可以了
web28
目录爆破http://198db4fc-9610-4051-a591-eb9d90e8fd47.challenge.ctf.show/0/1/2.txt
,
把最后的2.txt
去掉,爆破两个数字访问目录看返回值,设置两个payloads类型为numbers,然后范围随便写个0-100,
Comments NOTHING