Insert语句在SQL注入中的用法
Insert statement usage in SQL injection
我正在学习 SQL 注入教程。我不明白 SQL 语句的一个方面,它用于确定 table 中的不同列将在网页上显示的位置,然后用于执行语句。之前的一个SQL注入语句已经被用来确定table中的列数为6。SQL语句是
SELECT * FROM TableName Where id=12 union all select 1,2,3,4,5,6
我研究了 SELECT 和 UNION ALL 语句,但无法弄清楚实际发生了什么。我的想法是,第二个 select 语句中的数字代表列号。
用于从 table 获取值的第二条语句是:
SELECT * FROM TableName Where id=12 union all select 1,2,3,4,user(),6
select 1,2,3,4,5,6 和 select 1,2,3,4, user(),6 组件是什么 SQL 注入查询究竟做了什么?
它们不是列号而是值。假设您可以以某种方式注入语句,您现在需要对其进行处理。第一个示例对列进行计数。当没有足够的列时,UNION
将失败。通过向 UNION
添加更多列,该语句最终将执行。现在你知道有多少列了。
第二个是将用户注入 return 结果集。假设由于某种原因结果集显示在屏幕上,您现在有了一个用户名(或服务帐户名),可以使用它在您的数据库上执行更多语句、提升权限或进行服务调用。
它正在做类似的事情。不了解更多就很难知道到底是什么。
我正在学习 SQL 注入教程。我不明白 SQL 语句的一个方面,它用于确定 table 中的不同列将在网页上显示的位置,然后用于执行语句。之前的一个SQL注入语句已经被用来确定table中的列数为6。SQL语句是
SELECT * FROM TableName Where id=12 union all select 1,2,3,4,5,6
我研究了 SELECT 和 UNION ALL 语句,但无法弄清楚实际发生了什么。我的想法是,第二个 select 语句中的数字代表列号。
用于从 table 获取值的第二条语句是:
SELECT * FROM TableName Where id=12 union all select 1,2,3,4,user(),6
select 1,2,3,4,5,6 和 select 1,2,3,4, user(),6 组件是什么 SQL 注入查询究竟做了什么?
它们不是列号而是值。假设您可以以某种方式注入语句,您现在需要对其进行处理。第一个示例对列进行计数。当没有足够的列时,UNION
将失败。通过向 UNION
添加更多列,该语句最终将执行。现在你知道有多少列了。
第二个是将用户注入 return 结果集。假设由于某种原因结果集显示在屏幕上,您现在有了一个用户名(或服务帐户名),可以使用它在您的数据库上执行更多语句、提升权限或进行服务调用。
它正在做类似的事情。不了解更多就很难知道到底是什么。