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

本文涉及的产品
语种识别,语种识别 100万字符
文本翻译,文本翻译 100万字符
图片翻译,图片翻译 100张
简介: 本文档详细记录了CTFshow平台上的Web安全挑战学习过程,包括条件爆破、伪随机数爆破及目录遍历等多种攻击手法。通过分析PHP的`substr()`函数与MD5加密特性,实现对特定条件的token爆破;利用Mersenne Twister算法的伪随机数生成机制破解随机数挑战;通过身份证信息爆破获取账户密码;最后通过目录遍历技术找到隐藏的flag。提供了完整的脚本示例,帮助读者理解和实践各种爆破技巧。

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

CTFshow-web23-条件爆破

QQ截图20240924223109.png

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

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

    substr() 函数是 PHP 中的一个字符串函数,用于返回字符串的一部分12345substr() 函数的语法为: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,所以我们你可以先令$r-0,这样我们就能知道intval(mt_rand())的值了
image-20240925145947151.png

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

QQ截图20240925151104.png

将这三个爆破出来的seed,用脚本全部生成两次随机数,将结果分别用GET的$r 和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"; // 添加换行以便区分每次循环的结果
//}
//========================================

?>
相关文章
|
2月前
|
测试技术 网络安全 数据安全/隐私保护
burpsuite口令爆破的四种模式
burpsuite口令爆破的四种模式
|
3月前
|
数据安全/隐私保护
CTF — 压缩包密码爆破
CTF — 压缩包密码爆破
261 0
|
存储 编解码 Shell
[LitCTF 2023]ssvvgg(Steghide爆破)
[LitCTF 2023]ssvvgg(Steghide爆破)
173 1
|
7月前
|
存储 自然语言处理 安全
安全小课堂丨什么是暴力破解?如何防止暴力破解
暴力破解是通过尝试所有可能的密码组合来解密,基于字符集合、有限密码长度和可预测性假设。黑客利用此方法获取未经授权的访问,如入侵系统或账户,可能为了利润、数据盗窃、恶意软件传播等目的。常见的攻击类型包括简单暴力、字典式、混合、反向和撞库。防御措施包括使用复杂密码、双因素认证、限制登录尝试和利用密码管理器。加密、加盐和实时监控也能增强安全性。
|
网络协议 网络安全 数据安全/隐私保护
【渗透】爆破工具Hydra
Hydra是一款强大的工具,可以帮助用户快速地进行密码破解和暴力攻击。如果你看过我之前写的靶机视频,你就会发现,在用大字典时,相对于burp suite,Hydra的表现更为优异,那么我们就来深入了解一下这个爆破神器吧。
290 0
|
XML 开发框架 安全
记一次后门爆破到提权实战案例
记一次后门爆破到提权实战案例
101 0
|
安全 关系型数据库 MySQL
口令破解(web安全入门07)
口令破解(web安全入门07)
327 0
|
存储 前端开发 安全
pikachu靶场通关之暴力破解
pikachu靶场通关之暴力破解
437 0
pikachu靶场通关之暴力破解
|
Web App开发 安全 数据安全/隐私保护
BurpSuite进行暴力破解
靶场环境Pikachu 攻击机KALI 工具BurpSuite 1.打开并设置BurpSuite的代理 首先依次点击Proxy-Intercept 在监听的IP前打上勾
327 0
BurpSuite进行暴力破解
|
安全 小程序 Linux
黑客是怎么知道你的密码的
在踏入网络安全领域之前,我也和周围的很多人一样很奇怪,键盘上的组合这么多,黑客是怎么知道我的密码的。其实这一切就是这么简单。 首先,要声明,我不是黑客啊,不要误会,从不干任何违法的事。然后再说一下,任何的防护都是有漏洞的,无数的大佬已经用行动证明了世界上没有不透风的墙,安全永远只是相对的。下面是一些常用的破解密码的方法。
黑客是怎么知道你的密码的

热门文章

最新文章