之前看了seay写的PHP代码审计的书,全部浏览了一遍,作为一个代码审计小白,希望向一些和我一样的小白的人提供一下我的收获,以及一个整体的框架和常见漏洞函数。这也算是这本书的一个学习笔记吧,可以结合我捋顺的思来看这本书。: )
全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。
看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件 以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩婚外沉沦展阅读。
move_uploaded_file() 接着看调用这个函数的代码是否存在为上传格式或者可以绕过。
$action = delete即可删除.sql的文件,如果文件不是sql直接删除提交的文件名
(2)is_numeric():当传入参数为hex时 直接通过并返回true 并且MYSQL可以直接使用hex编码代替字符串 可以二次注入 并且可能造成XSS漏洞
水平越权:A用户能够以B用户的身份,进行B用户的全部权限操作。前提A用户和B用户拥有相同的权限。
垂直越权:A用户能够以C用户的身份,进行C用户的全部权限操作,前提C用户比A用户拥有更高的权限。
找到传入sql语句的参数的传递过程 回溯变量到最原始的函数 看它保存在cookie的算法 是否可逆
不受GPC的$_SERVER变量:PHP5以后,$_SERVER取到的header不再受GPC影响,就算特殊字符也不会被转义,存在注入编码问题转换:
GBK的宽字节注入:%df 单引号自动被转义成(%5c),同时%df与%5c连在一起组合成運字单引号依然在,成功闭合。【php与mysql交互过程中发生的编码转换问题】
自己安全这条既是兴趣也是偶然,选择白盒完全是因为喜欢php,毕竟是初识代码审计,seay的书确实帮了我不少,抱作者大腿(我是萌妹纸),希望这篇文章能够帮助像我一样小白的人,花了两天总结的,如果有什么缺陷也等着大家指出。
本文由 325游戏(m.325games.com)整理发布