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

本文涉及的产品
图片翻译,图片翻译 100张
语种识别,语种识别 100万字符
文档翻译,文档翻译 1千页
简介: 本文档详细记录了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"; // 添加换行以便区分每次循环的结果
//}
//========================================

?>
相关文章
|
数据安全/隐私保护
CTF密码学·置换密码,栅栏密码,曲路密码
1.置换密码 置换密码(Permutation Cipher)又叫换位密码(Transposi-tionCipher),它根据一定的规则重新排列明文,以便打破明文的结构特性。置换密码的特点是保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序
1589 1
CTF密码学·置换密码,栅栏密码,曲路密码
|
安全 Shell 网络安全
基于Vulnhub靶场—DC4渗透测试过程
Vulhub是一个开源项目,专注于安全漏洞的复现和学习。包括Web应用、容器和操作系统漏洞。项目特点包括丰富的漏洞场景、详细的复现指南、便捷的环境部署和持续更新。通过Vulhub,安全从业者可以学习和研究漏洞利用技术。此外,文章还介绍了如何下载和搭建Vulhub靶机DC-4,并详细描述了利用Burp Suite进行密码爆破和命令执行,最终获取root权限的过程。
1101 0
|
SQL 监控 druid
Druid未授权访问 漏洞复现
Druid未授权访问 漏洞复现
17005 0
|
前端开发 PHP 开发工具
CTFshow 信息搜集篇 web1-web20
CTFshow 信息搜集篇 web1-web20
189 0
|
Linux 数据安全/隐私保护 iOS开发
CTF—图像隐写三板斧(续)
CTF—图像隐写三板斧(续)
569 0
|
10月前
|
安全 数据安全/隐私保护 Python
BUUCTF-[GUET-CTF2019]re(Reverse逆向)
本文介绍了如何对一个带有UPX壳的ELF文件进行逆向分析。首先通过010Editor确认文件类型和壳的存在,接着使用Free UPX工具进行脱壳。脱壳后在IDA中加载文件,通过字符串查找和交叉引用跟踪定位关键函数。最终利用Python的z3库解决约束问题,得到flag。过程中还遇到了Python版本兼容性问题,并通过重新安装z3-solver解决。最终flag为`flag{e165421110ba03099a1c039337}`,经MD5解密验证为`233`。
344 0
BUUCTF-[GUET-CTF2019]re(Reverse逆向)
|
存储 SQL 缓存
Ctfshow web入门 PHP特性篇 web89-web151 全(一)
Ctfshow web入门 PHP特性篇 web89-web151 全(一)
608 0
|
JSON 开发框架 网络安全
[网络安全] Dirsearch 工具的安装、使用详细教程
[网络安全] Dirsearch 工具的安装、使用详细教程
7841 0
|
SQL 安全 算法
BugKu CTF(Crypto):MaybeEasyRSA & easy_crypto & 黄道十二宫 & 给你私钥吧
BugKu CTF(Crypto):MaybeEasyRSA & easy_crypto & 黄道十二宫 & 给你私钥吧
|
前端开发 安全 应用服务中间件
CTFShow-WEB入门篇文件上传详细Wp(151-170)
CTFShow-WEB入门篇文件上传详细Wp(151-170)
1486 0

热门文章

最新文章