最好是用火狐浏览器,FoxyProxy插件,burpsuite,ctfshow给的字典附件
如何配置的问题去别的博客搜,都有。
这里访问题目的时候就要开始抓包,然后点forward放包
然后在题目那里输入账号密码,以admin/admin为例,点击登录
又抓到了一个包,可以看到base64加密后的账号密码
CTRL+I放到Intruder爆破模块。添加变量
payloadtype选Custom iterrator,position1填admin,position2填: ,position3导入字典
往下滑paylaod processing选择base64encode
爆破完成后按长度排序发现一个200的状态码
查看响应头发现flag
推荐用OneForAll爆破,项目地址:GitHub - shmilylty/OneForAll: OneForAll是一款功能强大的子域收集工具
或者用在线子域名爆破网站:在线子域名查询
代码要求get传入的token经过md5加密后,第1位=第14位=第17位并且(第1位+第14位+第17位)/第1位=第31位,可以写一个php脚本跑一下,应该有很多种可能。
结果有两个
Linux version 5.4.0-131-generic (buildd@lcy02-amd64-108) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #147-Ubuntu SMP Fri Oct 14 17:07:22 UTC 2022 Linux version 5.4.0-131-generic (buildd@lcy02-amd64-108) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #147-Ubuntu SMP Fri Oct 14 17:07:22 UTC 2022
x1.00
考察php伪随机数的爆破
原理参考文章:PHP的伪随机数爆破_WHOAMIAnony的博客-CSDN博客
发现给了随机数种子
查看响应头发现服务器php版本为7.3.11
直接本地用php跑一下随机数
结果为1155388967,get传入即可得到flag
关键代码如下
include("flag.php");
if(isset($_GET['r'])){
$r = $_GET['r'];
mt_srand(hexdec(substr(md5($flag), 0,8)));
$rand = intval($r)-intval(mt_rand());
if((!$rand)){
if($_COOKIE['token']==(mt_rand()+mt_rand())){
echo $flag;
}
}else{
echo $rand;
}
通过查看响应头可知网站用的是php7.3的版本,接下来要绕过以下代码
if((!$rand)){
if($_COOKIE['token']==(mt_rand()+mt_rand())){
令r=117383695可以使得!$rand为真,mt_rand()的值本地测试代码如下,经过尝试2590851206为随机数种子.
if($_COOKIE['token']==(mt_rand()+mt_rand()))
通过该行代码我们知道要将两个随机数相加,本地测试代码如下:
输出结果如下:
利用hackbar进行get传参,modheader插件进行cookie传参得到flag
最终payload
?r=117383695
Cookie:token=1886562161
进入容器直接点击开始安装,出现install.php的界面,直接填信息,开始安装,果然报错了,抓个包看看。
感觉是密码错了,直接放入爆破模块,将密码设为变量,字典是网上很常见的top1000,直接开始爆破,竟然没爆出来。直接上了个2w的字典,结果如下:
我看有的师傅参数全部设置为空,传上去也能得到flag,目前不知道什么原理
登录网站发现有录取名单,下载下来看一下发现有姓名和身份证号,发现身份证号就缺了生日那部分。
接着看题发现了一个学籍管理系统可以验证姓名和身份证的地方
这时候我们的思路就是可以借助burpsuite进行爆破。先抓包,可能直接点查询不是这个包,forward一下就行
Ctrl+i发送到爆破模块进行如下配置
开始爆破,然后按长度length排序,发现一个成功
将unicode进行在线解码,得到账号密码
没啥思路,看看提示
很明确了,去burp爆破目录就行了。模式改成第四个,参数设置俩个
payloads这样设置