【CTF练习】Ctfshow入门 爆破(21-24)

Web21: 

        爆破题常用的工具就是bp的Intruder模块,将抓到的包发送到Repeater(点击action会有相应选项),用字典爆破:

        本题是一个登录窗口,首先第一步就是先输入用户名为:admin(一般没有额外提示就这么猜),密码随便输(此处输入111),然后登录。这一过程的目的是为了抓包查看爆破点

        有的时候抓包会直接看到用户名和密码的位置,这里就不能直接看到,此处将用户名和密码进行base64加密(对于一串字符后有=,基本就要猜测这一串数据是否是base64加密,解密看看是否有什么信息),解密后发现是  用户名:密码 这一格式,只需要在base64解码网站多试几次,即可判断密码的位置,然后添加爆破位置,用字典进行爆破。需要注意的是,这里要对密码进行base64编码,且符号不可再编码(payload encoding取消勾选),因为base64加密会产生=,如果对‘=’编码,会影响加密结果,导致密码错误,以下是详细步骤:

web23:

        要解决本题,首先要看懂网页给出的代码:

知识点:

        上面这个PHP脚本就是检查通过GET方法传递的token参数,只要这个参数满足脚本中的条件,也就可以输出我们想要的flag了,条件如下:

  1. 将GET请求中的token参数通过MD5算法进行哈希,并将结果赋值给$token变量
  2. 检查$token字符串的第2个字符是否等于第15个字符,并且第15个字符是否等于第18个字符
  3. 取得$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抓包爆破域名:

  • 49
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值