我正在学习SQL注入教程。我不明白SQL语句的一个方面,该语句用于确定表中的不同列将显示在网页上,然后用于执行语句的位置。以前的SQL注入语句用于确定表中的列数,即6列。
SELECT * FROM TableName Where id=12 union all select 1,2,3,4,5,6
我已经研究了SELECT和UNION语句,并且还没有弄清楚到底发生了什么。我的想法是,第二个select语句中的数字重新显示列号。
用于从表中获取值的第二个语句是:
SELECT * FROM TableName Where id=12 union all select 1,2,3,4,user(),6
SQL注入查询的选择1,2,3,4,5,6和选择1,2,3,4,user(),6组件实际做了什么?
发布于 2017-10-26 08:25:59
它们不是列号,而是值。假设您可以以某种方式注入语句,那么现在您需要做一些相关的事情。第一个示例对列进行计数。当没有足够的列时,UNION
将失败。通过向UNION
添加更多列,该语句最终将执行。现在你知道有多少列了。
第二个是将用户注入返回结果集。假设结果集出于某种原因在屏幕上显示,您现在有了一个用户名(或服务帐户名称),可以用它在数据库上执行更多语句、提升权限或进行服务调用。
它在做类似的事情。如果不知道更多,就很难知道到底是什么。
https://stackoverflow.com/questions/46942844
复制相似问题