知识点
数字型 0-9
字符型 a-z 中文 标点符号
开发程序里面,数字不需要单引号,字符需要单引号 双引号去概括的
需要考虑到符号的闭合 才能去正确执行SQL 完成SQL注入
案例
本地源码-数字&字符&搜索&编码&JSON
墨者靶场-字符转义处理防护-宽字节注入
真实WEB-数据编码接受处理-base64注入
真实WEB-JSON数据格式&MD5加密数据
工具脚本-SQLMAP-脚本Tamper使用指南
真实WEB-数据编码接受处理-base64注入
经过base64编码以后再传参就行
数据的表现形式
json
{“username”:”admin”,”password”:”xiaodi”}
username = admin & password = xiaodi
传入json={“username”:”admin’ and 1=2 union select 1,database(),3#”}
有很多网站在传递数据的时候不一定是明文,所以在注入的时候也要设计相应的payload去注入
输入id=4 order by 10的base64编码,报错
输入 3没报错,4报错,得出字段数3个
报错查看回显点位为2,3
查询数据库名和版本
查表
查列名
查具体数据
4 and 1=222 union select 1,user_id,password from admin
sqlmap自动化注入:这是编码型注入,不能直接用sqlmap跑,
将注入payload进行编码,这样就能判定出注入点了
墨者靶场-字符转义处理防护-宽字节注入
接收数据,但是数据会出现\ /符号
\n 换行
自动加了斜杠导致没有办法闭合,导致注入失败
\ 一个字节
%df 两个字节 把\占用了,所以就成功闭合了
sqlmap里的unmagicquotes可以绕过这个转义函数,就可以注入了
总结:
扫描,利用工具等都不会自动判断数据类型、格式等,所以即使有漏洞也测不出来,具体还是需要人工的去观察,运行工具的修改或加载插件再次探针才可以。