如何判断sql注入流量特征
以dvwa的sql注入为例
首先构造一个完整的sql注入请求包
GET /dvwa_2.0.1/vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
Host: 10.9.47.41
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Referer: http://10.9.47.41/dvwa_2.0.1/vulnerabilities/sqli/
Cookie: security=low; PHPSESSID=fn83sjiabpfqv6lv885ftmlfg0
Upgrade-Insecure-Requests: 1
将其保存成一个文件
开启wireshark监听后,然后使用sqlmap测试
监听到的http包
可见其长度都比较长,因为需要使用较长的语句来查询,并且会出现url以及特殊字符抑或是特殊字符的编码格式
可以总结为
- 参数长度较长,可以在流量数据中寻找长度较长的包
- 非法字符及其编码,可以看到‘ “等字符的或者其编码格式
- 异常请求,http请求中会包含一或多个查询语句,或者包含某些参数
- 错误响应,如果注入语句不合规,可能会出现报错的响应包
- 非常规流量,可能在同一时间段出现大量的请求,或是相同的请求。
1.出现一些特殊字符{eg:单引号–‘、双引号–“”、括号–()、单引号括号–’(、双引号括号–"(等一些常见的特殊的字符};
eg:http://localhost/index.php/?id=1'and+1=1--+ eg:http://localhost/index.php/?id=1 and 1=1 -- -和1 and 1=2 --+
2.出现SQL命令/语句(增加、删除、修改、查询语句或者各语句之间的串接)
eg:url/?id=1" union select updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1) – -
eg:url/?id=-1’ union select 1,group_concat(schema_name),3 from information_schemaschemata --+
3.出现注释符号(在语句的最后出现连续2个减号字元 – 后的 文字为注解,或“/”与“/”所包起来的文字为注解)
4.在url上出现万能密码字段 ‘or’1’='1
5.出现常见的特殊函数
database()、updatexml()、extractvalue()、group_concat()、concat()、limit()、order by()、unsion()、system_user()、version()、load_file()、seelp()、length()、exp()、group by()、substr()、and、or等函数。
eg:?id=1” and updatexml(1,concat(0x7e,database()),3) --+
eg:?id=-1’ union select 1,2,seelp(5)–+
eg:1” union select updatexml(1,concat(0x7e,(select group_concat(username) from users)),1) #
6.出现各种编码(eg:url编码,base64编码等)可利用Burp或 者在线解/编码器进行操作查看是否有特殊字段。
7.user-agent字段出现sqlmap/1...#dev (http://sqlmap.org)
操作查看是否有特殊字段。
7.user-agent字段出现sqlmap/1...#dev (http://sqlmap.org)