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

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

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


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


目录

一:Supersqli

二:Warmup

三:总结

1.supersqli

2.Warmup


一:Supersqli

打开如下所示,初步筛查这应该是一道SQL注入题

这确实是一道SQL注入

1’ or 1=1 #

那接下来就是查询字段数

字段数为2

1’ order by 2 #

查询数据库

正常的查询发现不行,被过滤了

但是没有过滤分号那就可以堆叠注入联合show

1’;show tables ;#

成功查询到一个特殊的表

1';show columns from `1919810931114514`;#

查询发现此表含flag但select被过滤如何查询flag

利用handler代替select 查询

payload:1';handler `1919810931114514` open as `a`;handler `a` read next;#   

查询该表的数据

成功拿到flag


二:Warmup

点开发现有提示source.php

访问source.php和hint.php

是一堆代码,进行代码审计

访问hint.php提示我们flag在ffffllllaaaagggg


代码审计:

<?php highlight_file(__FILE__); //代码高亮 class emmm { public static function checkFile(&$page) //checkFile用于检查文件参数是否合法&$page 表示通过引用传递参数,这样在函数内部对 $page 的修改会影响到函数外部的变量。 { $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; //定义一个白名单数组,里面包含允许包含的文件名(source.php和hint.php) if (! isset($page) || !is_string($page)) { //第一个if功能为检查$page是否存在且为字符串类型如果不是则返回false echo "you can't see it"; return false; } if (in_array($page, $whitelist)) { ///检查$page是否存在于白名单中存在则返回true return true; } $_page = mb_substr( //截取$page中?之前的部分存在$_page(mb_substr是字符串截取函数,mb_strpos是字符串查找函数) $page, 0, mb_strpos($page . '?', '?') ); if (in_array($_page, $whitelist)) { //检查截取后$_page是否在白名单中存在则返回true return true; } $_page = urldecode($page); //对$page进行url解码 $_page = mb_substr( //截取?之前的部分存在$_page中 $_page, 0, mb_strpos($_page . '?', '?') ); if (in_array($_page, $whitelist)) { //检查解码并截取后的$_page是否在白名单中存在则返回true return true; } echo "you can't see it"; return false; } } if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file']) //也就是说只有过掉checkFile方法才可以包含文件 ) { include $_REQUEST['file']; exit; } else { echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />"; } ?>

经过如上审计我们得知如果想要拿到flag就需过掉checkfile方法,那checkfile方法有四个if判断语句

第一个判断语句就是判断我们传进去的是否为不为空且是字符串

第二个判断语句判断我们传的值是否在白名单中

第三个判断截取?之前部分后是否在白名单中

第四个判断语句判断对我们传的值URL解码截取后是否在白名单中

总得来说我们正常包含文件时/source.php?file=........

但是他第三年个和第四个判断语句只截取?之前的而file则被筛掉导致无法包含

所以只要我们变换一下顺序即可且第二个到第四个if判断只要有一个绕过即可

Payload:?file=source.php?../../../../../../ffffllllaaaagggg   (绕过第三个if判断)

Payload:/source.php?file=source.php?../../../../../../ffffllllaaaagggg(这样也可以)

成功拿到flag


三:总结

1.supersqli

SQL注入漏洞,考察绕过过滤和堆叠注入技巧

解题要点

  1. 过滤检测:题目对常见的SQL注入关键字进行了过滤,如selectupdatedelete
  2. 堆叠注入:发现可以使用分号;进行堆叠注入
  3. 绕过方法
    • 使用prepareexecute预处理语句绕过过滤
    • 或者使用handler语句代替select进行数据读取

关键payload

1';handler `1919810931114514` open as `a`;handler `a` read first;#

学习收获

  • 堆叠注入的实际应用
  • 预处理语句在SQL注入中的使用
  • handler语句作为select的替代方案
  • 字符串拼接绕过关键字过滤的技巧

2.Warmup

代码审计与文件包含漏洞

解题要点

  1. 源码分析:通过查看页面源码发现提示source.php
  2. 文件包含:访问source.php获取源代码进行审计
  3. 漏洞点
    • 存在文件包含功能,但添加了../..\的过滤
    • 使用checkFile函数进行白名单检查
  4. 绕过方法
    • 利用四层目录结构../../../../绕过检查
    • 最终payload构造为file=source.php?../../../../../ffffllllaaaagggg

学习收获

  • PHP代码审计的基本方法
  • 文件包含漏洞的利用技巧
  • 目录遍历的绕过方法
  • 白名单检查机制的绕过思路

综合对比

方面

Supersqli

Warmup

漏洞类型

SQL注入

文件包含

主要技巧

堆叠注入、预处理语句、handler语法

目录遍历、白名单绕过

过滤机制

关键字过滤

路径符号过滤

解题关键

找到未被过滤的替代语法

构造足够深的目录结构绕过检查

难度等级

简单

简单


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

Read more

C++上位软件利用Snap7开源库实现西门子S7-200与合信M226ES多协议数据交互实战

1. 为什么我们需要跨品牌PLC数据交互? 在工厂车间里,你可能会遇到这样的场景:一条产线上,既有服役多年的西门子S7-200 PLC在控制老旧的传送带,又有新上的合信M226ES运动控制器在驱动高精度的机械臂。它们各司其职,但产线的整体协调需要它们“对话”。比如,S7-200需要告诉M226ES:“物料已到位,可以开始抓取了”;M226ES完成动作后,也需要反馈:“任务完成,可以流转下一工位了”。 这就是异构设备协同的典型需求。过去,实现这种跨品牌通信往往需要购买昂贵的网关,或者依赖复杂的OPC服务器,不仅成本高,开发和维护也麻烦。现在,我们可以换个思路,用一台普通的工控机或服务器,运行我们自己写的C++上位软件,通过一根网线,直接同时与西门子和合信的PLC“握手”通信。这背后的核心武器,就是Snap7这个开源通信库。 我干了十多年工业自动化,发现很多工程师一听到“C++”、“开源库”就觉得头大,觉得那是软件工程师的事。其实不然,现在的工具已经足够友好,只要你理解基本的通信概念,跟着步骤一步步来,完全能自己搞定。这篇文章,我就想用最“人话”

By Ne0inhk

Clawdbot汉化版效果实测:Telegram中AI解析GitHub PR描述生成测试用例

Clawdbot汉化版效果实测:Telegram中AI解析GitHub PR描述生成测试用例 Clawdbot汉化版最近新增了企业微信入口,让国内用户接入更顺畅。但真正让人眼前一亮的,是它在Telegram里完成的一次“硬核操作”——自动读取GitHub Pull Request描述,精准提炼需求逻辑,并生成可直接运行的单元测试用例。这不是概念演示,而是我在真实项目中跑通的完整链路:从PR提交、机器人自动抓取、语义理解,到输出带断言的Python pytest代码,全程无需人工干预。 这背后没有魔法,只有扎实的工程设计:本地运行的轻量级网关、支持多模态提示工程的Agent调度层、以及对开发者工作流的深度适配。它不依赖云端API,所有解析都在你自己的机器上完成;它不把PR当纯文本处理,而是识别标题、描述、变更文件路径、甚至代码块中的函数签名;它生成的测试不是模板套话,而是能真实覆盖边界条件的可执行代码。接下来,我就带你一步步还原这个过程——不讲架构图,不列参数表,只说你打开终端就能复现的操作、遇到的真实问题,和那些让同事当场截图保存的惊艳瞬间。 1. Clawdbot不是另一个聊

By Ne0inhk

GLM-5开源:从代码到工程,Agentic Engineering时代最好的开源模型

GLM-5开源:从代码到工程,Agentic Engineering时代最好的开源模型 来源:智谱 今天,我们上线并开源 GLM-5。 学界与业界正逐渐形成一种共识,大模型从写代码、写前端,进化到写工程、完成大任务,即从“Vibe Coding”变革为“Agentic Engineering”。 GLM-5 正是这一变革的产物:在 Coding 与 Agent 能力上,取得开源 SOTA 表现,在真实编程场景的使用体感逼近 Claude Opus 4.5,擅长复杂系统工程与长程 Agent 任务。 在全球权威的 Artificial Analysis 榜单中,GLM-5 位居全球第四、开源第一。 更大基座,更强智能 GLM-5 全新基座为从“写代码”

By Ne0inhk
开源C2框架AdaptixC2安装与使用教程

开源C2框架AdaptixC2安装与使用教程

⚠️ 重要声明 法律与道德准则 1. 授权测试原则:本文所述技术仅可在拥有明确书面授权且完全控制的网络环境中使用。 2. 严禁违法行为:未经授权对任何计算机系统进行扫描、渗透或控制均属违法行为。 3. 推荐使用场景:建议仅在隔离的实验室环境中用于安全研究与教学目的。 4. 责任界定:任何技术滥用行为所产生的全部法律及道德后果,均由使用者自行承担。 软件安全规范 * 源码安全原则:为保障透明与安全,本文不提供任何预编译二进制文件。所有程序必须从项目官方源码仓库自行编译。 * 官方获取渠道:请仅从项目GitHub官方仓库获取源码。 * 第三方风险警示:任何非官方渠道提供的"免编译版"、“一键安装包”、"破解版"均可能被植入恶意代码,请勿下载使用。 文章目录 * ⚠️ 重要声明 * 法律与道德准则 * 软件安全规范 * 一、安装与配置 * 1、下载项目源代码 * 2、安装与编译 * 方法一:使用官方脚本进行安装 * 方法二:手动安装 * 1.安装依赖

By Ne0inhk