爆破
web21
题目:爆破什么的,都是基操
我们尝试抓包
我们发现用户名和密码被加密,用burp自带解码工具解码
发现用户名和密码中间用冒号隔开
爆破成功
web22
题目:域名也可以爆破的,试试爆破这个ctf.show的子域名
页面失效,提交flag{ctf_show_web}
web23
题目:还爆破?这么多代码,告辞!
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-03 11:43:51
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-03 11:56:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
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.要第二位与第15位与第18位相同 (因为下标是从0开始)
2.第二位+第15位+第18位/第二位=第32位
我们利用现成脚本:
import hashlib
a = "0123456789qwertyuiopasdfghjklzxcvbnm"
for i in a:
for j in a:
b = (str(i) + str(j)).encode("utf-8")
m = hashlib.md5(b).hexdigest()
if(m[1:2] == m[14:15] and m[14:15] == m[17:18]):
if ((int(m[1:2]) + int(m[14:15]) + int(m[17:18])) / int(m[1:2])) == int(m[31:32]):
print('原字符串为:',b)
print('加密后字符串为:',m)
所以token=3j
传参token=3j 得到flag
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RSAfK9cK-1644057106402)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220204164504477.png)]
web24
题目:爆个