SQL注入攻击 (SQL Injection Attack)
SQL注入分类
1.基于布尔类型的盲注
可以根据返回页面判断条件真假的注入。
2.基于时间的盲注
不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即根据页面返回时间是否增加)来判断。
3.基于报错注入
页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
4.联合查询注入
在可以使用Union的情况下的注入。
5.堆查询注入
可以同时执行多条语句时的注入。
DNSlog盲注
主要结合ceye.io(知道创宇)的这个平台来折腾。因为UNC路径原因dnslog回显只能用于windows系统。
DNSLog注入常用场景
1.SQL注入中的盲注 在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显
2.无回显的命令执行 我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功
3.无回显的SSRF
REF: DNSlog注入学习 《网络攻防实战研究:MySQL数据库安全》
宽字节注入
什么是宽字节? GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际为2字节。(比如:中文、日本、韩文等编码) 而长度为1个字节的是窄字节。
宽字节注入原理
注意:ASCII码大于128才能到汉字的范围。
宽字节注入方法
在注入点后键入%df,然后按照正常的注入流程开始注入。
eg:http://127.0.0.1/sqli-labs/Less-32/?id=%df' union select 1,(select user()),3 --+
宽字节注入防范措施
-
数据库使用utf-8编码 (中文、日本、韩文等编码都是宽字节,所以都有可能存在宽字节注入漏洞)
-
php使用mysql_real_escape_string时,要设置mysql_set_charset('gbk',$conn);
-
设置mysql字符集参数,character_set_client=binary