24-9-24-web爆破-学习笔记

举报
坠入极夜的夏 发表于 2024/09/25 21:08:45 2024/09/25
【摘要】 24-9-24-web爆破-学习笔记

24-9-24-web爆破-学习笔记

CTFshow-web23-条件爆破

QQ截图20240924223109.png

​ 首先我们需要了解substr()函数,

Substr(string/*字符串*/, start/*开始位置*/, length/*截取范围*/)

    substr() 函数是 PHP 中的一个字符串函数,用于返回字符串的一部分12345。substr() 函数的语法为:substr(string, start, length),其中 string 是被截取的字符串,start 是开始截取的位置,length 是截取的长度1345。如果 start 参数是负数且 length 小于或等于 start,则 length 为 015

​ 鉴于此,我们需要一个令token的值为一个数,且这个数经过MD5加密后的的第1,14,

,17位必须为数字,且1+14+17/1等于第31位数

​ 我们可以编写一个token参数的爆破脚本

<?php
# CTFshow-web23-条件爆破
    
error_reporting(0);//抑制错误输出
for($a=0;$a<10000;$a++)/*设置循环范围*/{
    $token = md5($a);
    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='.$a,'    ','md5'.md5($a)."\n";//输出爆破结果
        }
    }
}
?>

image-20240924224641464.png

image-20240924224712551.png

将爆破出来的token使用get传参后,成功get flag

CTFshow-web24-伪随机数爆破

image-20240924231621719.png

先分析代码,通过GET方式传入r,使得intval($r)=intval(mt_rand())

咱们先看,mt_srand``mt_randintval这三个函数

mt_srand(seed):函数用于初始化随机数生成器的种子(seed)
	这是Mersenne Twister 算法,按seed的范围生成一个随机数,每一个相同的seed,生成的随机序列也是相同的,
mt_rand():函数根据先前由 mt_srand() 设置的种子来生成一个伪随机数,种子不变,生成的伪随机数也不变
intval():是用来确保结果是一个整数,
	函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1

分析理解代码之后,我们可以写一个脚本,来爆破出题目seed的随机数,

# CTFshow-web24-伪随机数爆破

mt_srand(372619038);
echo intval(mt_rand());
echo "\n";

image-20240924233357287.png

获取输出结果后,令$r=1155388967,即可成功get flag
image-20240924231500891.png

CTFshow-web25-伪随机数爆破+

image-20240925144132549.png

这道题我们需要先看懂代码,

hexhec()函数:把十六进制转换为十进制

第一段if,我们需要令rand=0,所以我们你可以先令rand=0,所以我们你可以先令r-0,这样我们就能知道intval(mt_rand())的值了
image-20240925145947151.png

接下来需要爆破出seed的值,这一步就需要用工具了,php_mt_seed

QQ截图20240925151104.png

将这三个爆破出来的seed,用脚本全部生成两次随机数,将结果分别用GET的rCookier 和Cookie的token传参

$array = ['26734044', '2631744564', '3161089573'];
foreach ($array as $a) {
    mt_srand($a);
    echo mt_rand() . "    ";
    echo mt_rand() + mt_rand();
    echo "\n"; // 添加换行以便区分每次循环的结果
}

将生成的mt_rand()+mt_rand()全试一遍,成功get flag
QQ截图20240925152236.png

CTFshow-web26-密码爆破

image-20240925162319181.png

密码爆破,无需多言

CTFshow-web27-身份证出生日期爆破

image-20240925195335230.png

先看源码并尝试admin/admin,都不行,点击录取名单,下载下一个xls文件表,发现查询功能仅需要姓名和身份证,xls中除了出生日期剩下的全给了,直接爆破

QQ截图20240925195927.png

成功get身份证的出生日期,查询后,将内容Unicode解码
image-20240925200326481.png

成功获得账号密码后,登录,直接get flag

image-20240925200053944.png

CTFshow-web28-目录遍历

按照提示,从/0/0遍历到/100/100,其中包含flag

在/72/20/下的响应包中,成功get flag
QQ截图20240925201055.png

使用的脚本总汇

<?php
# 24-9-24-web爆破-学习笔记
//========================================
# CTFshow-web23-条件爆破

//error_reporting(0);
//for($a=0;$a<10000;$a++){
//    $token = md5($a);
//    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='.$a,'    ','md5'.md5($a)."\n";
//        }
//    }
//}
//========================================
# CTFshow-web24-伪随机数爆破

//mt_srand(372619038);
//echo intval(mt_rand())."\n";
//echo "\n";
//========================================
# CTFshow-web25-伪随机数爆破

//$array = ['26734044', '2631744564', '3161089573'];
//foreach ($array as $a) {
//    mt_srand($a);
//    echo mt_rand() . "    ";
//    echo mt_rand() + mt_rand();
//    echo "\n"; // 添加换行以便区分每次循环的结果
//}
//========================================

?>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。