代码审计小技巧
欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0815/106238.html 1190000020073071
漏洞挖掘与防范
SQL注入漏洞
1.搜索关键字如select from、update、insert、delete
、mysql_connect
、mysql_query
、mysql_fetch_now
等关键字可定向挖掘SQL注入漏洞。
宽字节注入
2.urlencode、urldecode、rawurlencode、rawurldecode
区别。使用不当可导致宽字节注入。
除了 -_.
之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。urlencode
和rawurlencode
的区别:
1)urlencode
将空格则编码为加号(+)
2)rawurlencode
将空格则编码为加号(%20)
payload:
.../1.php?id=1df%' union select 1,database()#
'单引号自动转义在前面加了/'---经过urlencode洗礼后也就是5c%
如果php连接数据库的时候设置了set character_set_client=gbk,就是告诉mysql服务器 客户端 数据来源是GBK格式
这时df%5c%会被decode成一个汉字。
宽字节注入搜索关键字SET NAMES、character_set_client=gbk、mysql_set_charset('gbk')
二次urldecode注入
payload:%2527
%25进行解码后为% 再次解码%27结果为'(单引号)
原理是当某处使用了urldecode()
或者rawurldecode()
函数,当我们提交参数到WebServer的时候。WebServer会自动解码一次。然后在经过函数的二次解码。生成单引号引发注入。
可以搜索这两个函数的关键词进行定位。
防范措施--函数
gpc和addslashes
如果magic_quotes_gpc=On(php6以上没有此选项)
PHP解析器就会自动为post、get、cookie过来的数据增加转义字符,和函数addslashes功能差不多
mysql_[real_]escape_string函数
(php4.0.3版本以上才存在)
作用是转义特殊字符,包括:
\x00
\n
\r
\
'
"
\x1a