这里说的参数是源码中存在注入的地方。
其中参数类型有:数字、字符、搜索、json等。
其中sql语句干扰符号有:',",%,),}等,过滤首先考虑闭合这些符号,再进行注入测试。
例如php中的代码:
$name = $_GET['x'] $sql = "select * from user where name='$name'";
请求时:
http://www.xxx.com/x.php?id=xxx and 1=1 返回sql语句: select * from user where name='xxx and 1=1' 过滤方法: http://www.xxx.com/x.php?id='xxx and '1'='1
许多网站有搜索功能,其搜索框可能存 在注入点,注入时需闭合%。
sql中的搜索:
select *from user where name like '%参数%';
请求方法有:GET、POST、COOKIE、REQUEST、HTTP头等
GET请求:通过url直接请求
POST请求:通过请求正文进行请求
COOKIE:cookie属于请求头部分,有些网站可通过cookie请求的数据进行注入
REQUEST请求:既可以通过GET请求,也可以通过POST请求
HTTP头:HTTP请求头域中有些参数值可能存在可以访问服务器中数据库中某些信息,可能存在注入
sqlilabs第5关:
提交无反应,说明参数有有东西,查看源码
发现参数用单引号括起来了,需要闭合。
提交无反应,说明是无回显注入,暂时介绍到这里,后续在讲无回显注入方法。
sqlilabs第6关
第六关仍是无回显
查看源码
发现参数用双引号括起来的,要过滤双引号
sqlilabs第11关
抓个包试试:
是post请求方法,直接构造post请求方法进行注入
sqlilabs第20关
被转义,尝试cooki注入:
测试可行。
sqlilab第18关
显示ip和 User Agent,通过分析源码,这里对uname和passwd参数进行了处理,但是还有两个新的全局变量可控,ip和user-agent:
修改User-Agent内容为xxx,发包:
通过修改User-Agent进行报错注入: