Web21:
爆破题常用的工具就是bp的Intruder模块,将抓到的包发送到Repeater(点击action会有相应选项),用字典爆破:
本题是一个登录窗口,首先第一步就是先输入用户名为:admin(一般没有额外提示就这么猜),密码随便输(此处输入111),然后登录。这一过程的目的是为了抓包查看爆破点
有的时候抓包会直接看到用户名和密码的位置,这里就不能直接看到,此处将用户名和密码进行base64加密(对于一串字符后有=,基本就要猜测这一串数据是否是base64加密,解密看看是否有什么信息),解密后发现是 用户名:密码 这一格式,只需要在base64解码网站多试几次,即可判断密码的位置,然后添加爆破位置,用字典进行爆破。需要注意的是,这里要对密码进行base64编码,且符号不可再编码(payload encoding取消勾选),因为base64加密会产生=,如果对‘=’编码,会影响加密结果,导致密码错误,以下是详细步骤:
web23:
要解决本题,首先要看懂网页给出的代码:
知识点:
- 前端GET请求传参:GET和POST的区别以及传参详细解说_post传参-CSDN博客
- md5(就是一种加密算法):MD5算法 - 知乎 (zhihu.com)
- substr()函数:PHP substr() 函数 (w3school.com.cn)
- intval()函数:PHP intval() 函数 | 菜鸟教程 (runoob.com)
上面这个PHP脚本就是检查通过GET方法传递的token参数,只要这个参数满足脚本中的条件,也就可以输出我们想要的flag了,条件如下:
- 将GET请求中的token参数通过MD5算法进行哈希,并将结果赋值给$token变量
- 检查$token字符串的第2个字符是否等于第15个字符,并且第15个字符是否等于第18个字符
- 取得$token字符串的第2个、第15个和第18个字符,将它们转换成整数并进行加法运算。然后,将结果除以第2个字符(转换为整数),并检查结果是否等于第32个字符(转换为整数)
根据上述条件,写脚本得出合适的token值,利用hackbar传参:
import hashlib
for i in range(1, 1000):
# 将整数转换为字符串,并编码为字节
token_bytes = str(i).encode('utf-8')
token = hashlib.md5(token_bytes).hexdigest()
# 检查第一个条件
if token[1] == token[14] == token[17]:
# 将字符转换为整数,并计算表达式
sum_of_chars = int(token[1], 16) + int(token[14], 16) + int(token[17], 16)
quotient = sum_of_chars / int(token[1], 16)
# 将哈希值的第32个字符转换为十进制数
target_value = int(token[31], 16)
# 检查第二个条件
if quotient == target_value:
print(f'token={i}, md5={token}')
web24:
知识点:
- mt_srand(): 用于设置 Mersenne Twister 随机数生成器的种子
- mt_rand(): 则用于生成一个随机整数
- intval():函数用于获取变量的整数值
上述代码是处理一个名为r的GET请求参数,并检查这个参数是否等于一个由 Mersenne Twister 随机数生成器生成的随机数。由于 mt_srand();
设置了固定的种子,所以每次调用 mt_rand() 都会生成相同的随机数。这意味着,如果知道种子值(在这个例子中是 372619038),就可以计算出对应的随机数(由于 PHP 和 Python 使用的随机数生成器算法不同,即使使用相同的种子值,生成的随机数序列也会不同,此处用PHP脚本)。
<?php
mt_srand(372619038);
$r = mt_rand();
echo 'r='.$r;
?>
web25:
这题依然和随机数生成器有关,不过这道题会检验两个变量,一个是GET请求获取的参数r,一个是Cookie的参数token:
本题的关键就在于找到那个种子,很明显,代码没给出来,但是我们可以给r传参为0,输出的$rand就是intval(mt_rand())的相反数(即负值),从而根据第一次生成的随机数倒推种子,这里给出一篇文章(附上工具下载链接),写得很详细,学到了很多(需要注意的是,不同的PHP版本对应的种子是不一样的,记得查看一下当前浏览器对应的PHP版本,hackbar这个工具很好用,推荐大家下载哈!):
ctfshow web入门 爆破web25详解_ctfshow web25-CSDN博客
php_mt_seed - PHP mt_rand() seed cracker (openwall.com)
hackbar2.1.3 安装教程(附下载地址 )Firefox & Chrome-CSDN博客
web26:
题目说:这个可以爆(能够用弱口令爆破那太好了!!!),按照输入框给的随便输入,并抓包(确定爆破位置),一般就是爆破密码(一些常用的弱口令大家可以去网上找一下,有很多的!)
web27:
页面是一个用户登录的界面,有学号和密码,但我们什么都不知道,再看看别的。录取名单是可以点击的,点击就可以下载一个excel表格,里面有学生的姓名、专业、身份证号(有几位是不知道的),点击“学生学籍信息查询系统”,输入姓名和身份证号即可查询。很明显,这一题首先要爆破身份证。在“学生学籍信息查询系统”页面输入第一个学生的姓名和身份证号(那几个星号可以用数字替代),抓包(查看爆破点)。
在Inturder模块,选择Payload Options——payload type为Dates;在Payload Options设置开始年月日和结束年月日,并自定义设置格式为:yyyyMMdd;在Payload Processing添加(Add)前缀:621022,后缀:5237(因为此处我们查询的是第一个同学,其他几个同学步骤也是这样的,只不过前后缀不一样)
爆破成功后会得到一串Unicode编码,去解码网站解码,此处附上一个链接,根据解码后的提示继续就好啦~(!!!注意学号后面不要有多余空格,不然跟输入错误是一样的)在线Unicode/中文转换工具 - 编码转换工具 - W3Cschool
web28:
这个页面什么都没有,扫描目录也没有(毕竟这个是爆破,不是信息收集),没有登陆框可以爆破,源代码也看不了,穷途末路了属于是——But!还有一个地方可以爆破,那就是域名,网页的域名跟其他几次都不一样,多了一个/0/1/的路径,可以基于这个猜想一下,既然这里是数字,那我可不可以爆破域名捏(所以可以爆破的地方还是有的!!),把url中的2.txt删掉,回车,用bp抓包爆破域名: