代码审计学习笔记
最近在看代码审计 企业级web代码安全架构这本书,在办公室发现的,看了一下作者,竟然是seay源码审计系统的作者,我是用的第一个代码审计工具就是这个,当然,也就使用过这一个,记下笔记,这本书是16年出版,和现在的php版本有些差别,自行查阅资料
普通注入
普通注入可以直接搜索操作数据库的一些关键字,比如select from,mysql_connect,mysql_query,mysql_fetch_row等,还有update,insert,delete这些,只需要查找这些关键字,就可以定向挖掘sql注入
宽字节注入
宽字节注入时当我们设置set character_set_client=gbk时导致的一个编码转换的注入问题,在存在宽字节注入漏洞时,在注入参数里输入 %df%27,就能将过滤的\(%5c)吃掉,
这时候的sql语句为
Select * from user where id=’1運’ and 1=1#
这是由于单引号被自动转义成\’,前面的%df和转义字符\反斜杠(%5c)组合成了%df%5c,也就是運字这时候单引号依然存在,于是成功闭合了单引号
解决方法
1).在查询之前先执行SET NAMES ‘gbk’,character_set_client=binary
2).使用mysql_set_charset(‘gbk’)设置编码,然后使用mysql_real_escape_string()函数过滤
3).使用PDO
对宽字节注入的挖掘方法,只需要搜索SET NAMES,character_set_client=gbk,mysql_set_charset(‘gbk’)这几个关键字即可
二次urldecode注入:
如果使用了urldecode或者rawurldecode函数会导致二次解码生成单引号而引发注入,原理是我们提交参数到webserver时,webserver会自动解码一次假设目标程序开启了GPC,我们提交?id=1%2527,因为提交的参数中没有单引号,第一次解码是?id=1%27,%25解码是%,如果程序里使用了urldecode或者rawurldecode函数来解码id的值,则解码后的结果是?id=1’,单引号成功出现引发注入
二次urldecode注入是urldecode使用不当造成的,因此可以通过搜索urldecode、rawurldecode函数来挖掘urldecode注入漏洞
未完待续........

浙公网安备 33010602011771号