一、前言

php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞。如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程。

入门php代码审计实际并无什么门槛要求,只需要理解基础的php语法规则,以及理解各种类型漏洞的出现原因则可以开始尝试审计php源代码。通常的漏洞演示中sql语句会直接传入php自带的函数传入数据库执行,但在实际的软件项目中,通常以面向对象的思想进行编程,则会涉及各种形式的封装,调用,以及不同风格的框架,在这个条件下,只需要保持耐心跟踪其调用过程即可。

另外关于代码审计的思路而言,一种是通读代码逐行分析逻辑,另外一种是通过正则快速定位一些问题函数,再反向定位调用过程。这两种方式也对应代码审计的工具主流的实现思路,一种是通过语法分析的过程发现漏洞,另一者是定位问题函数实现。

不管什么方式,重点还是实战阅读代码,累积经验。

以上为个人观点,谨慎吸收。

二、基础知识要求

PHP语法

主流漏洞原理

三、入门阅读 & 参考

《代码审计入门总结》:http://bbs.ichunqiu.com/thread-8954-1-1.html

《php手册》:http://php.net/manual/zh/

《代码审计:企业级Web代码安全架构》:https://read.douban.com/ebook/16642056/

四、审计实战

基础系列

基础系列中的4篇文章基本是通过一些直观的小案例来让人理解从用户的交互到代码的执行这个过程中漏洞是以什么形式存在的,又是如何被利用的,初学者阅读这几篇文章可以让人更加快速的理解代码审计的过程,以及基本的审计思路。

常见WEB漏洞原理分析及利用方式——SQL注入篇 :

http://bbs.ichunqiu.com/thread-12694-1-1.html

常见WEB漏洞代码层原理分析及利用方式——文件操作漏洞篇 :

http://bbs.ichunqiu.com/thread-13008-1-1.html

常见WEB漏洞代码层原理分析及利用方式之Php代码执行篇 :

http://bbs.ichunqiu.com/thread-13465-1-1.html

常见WEB漏洞代码层原理分析及利用方式——文件操作 :

http://bbs.ichunqiu.com/thread-13408-1-1.html

高级系列

高级系列的几篇其实就代码审计的整个大的领域来说并不算高级,但是都有其特色,并且大部分是从真实的软件项目开始讲解,可以让初学者理解实战中可能会遇到的一些问题,以及实战中的思考过程。

代码审计之绕过后台权限限制,继续sql注入:

http://bbs.ichunqiu.com/thread-10102-1-1.html

代码审计之突破路径限制删除文件:

http://bbs.ichunqiu.com/thread-8979-1-1.html

代码审计之任意用户密码找回漏洞:

http://bbs.ichunqiu.com/thread-10497-1-1.html

代码审计之伪全局机制使用不当导致的致命后果:

http://bbs.ichunqiu.com/thread-11390-1-1.html

代码审计之绕过addslashes总结:

http://bbs.ichunqiu.com/thread-10899-1-1.html

mel 和 bees系列都是指定了对某个实际软件项目的审计,初学者可以跟随作者的脚步进行挖掘,联系,其他的类型则是一些杂乱的文章。

Melcms分析集合

代码审计就该这么来 Mlecms Getshell:

http://bbs.ichunqiu.com/thread-13703-1-1.html

代码审计就该这么来2 Mlecms 注入:

http://bbs.ichunqiu.com/thread-13714-1-1.html

{代码审计思路} (通读+审计) Mlecms(中危漏洞/不简单):

http://bbs.ichunqiu.com/thread-11510-1-1.html

beescms分析集合

【代码审计初探】beescms v4.0_R SQL:

http://bbs.ichunqiu.com/thread-12635-1-1.html

对Beescms SQL注入漏洞的进一步思考:

http://bbs.ichunqiu.com/thread-13606-1-1.html

代码审计就该这么来3 beescms getshell:

http://bbs.ichunqiu.com/thread-13977-1-1.html

Beecms任意文件删除:

http://bbs.ichunqiu.com/thread-14540-1-1.html

其他

PHP代码审计:Null 字符问题:

http://bbs.ichunqiu.com/thread-4349-1-1.html

一个CMS案例实战讲解PHP代码审计入门:

http://bbs.ichunqiu.com/thread-16775-1-1.html

PHP代码审计储存XSS形成防御加利用篇:

http://bbs.ichunqiu.com/thread-10532-1-1.html

ZZCMS的代码审计:

http://bbs.ichunqiu.com/thread-14684-1-1.html

另外要提的一点是,不同语言编写的web应用其实都有相似性,当你熟练了解一门语言的代码审计过程后其实便可以进一步扩展到别的语言。你会发现基本原理是相似的,当然不同还是存在的,比如其中的addslashes和null的文章便是如此,它是php这门语言独有的问题,其他还有的一些差异在这里不细说明。

五、i春秋课程推荐

PHP代码审计实战:

http://www.ichunqiu.com/course/54473

六、代码审计工具推荐

RIPS

它能检查出XSS ,sql注入,敏感信息泄漏,文件包含等常见漏洞;能够采用正则方式扫描代码发现漏洞;也可以采用自定义的语法扫描代码发现问题。

下载链接:http://rips-scanner.sourceforge.net/

参考文章

工具推荐:三款自动化代码审计工具:http://bbs.ichunqiu.com/thread-16776-1-1.html

七、关联阅读

Mybatis框架下SQL注入漏洞面面观:

http://bbs.ichunqiu.com/thread-12574-1-1.html

如何用grep对PHP进行代码审计:

http://bbs.ichunqiu.com/thread-16779-1-1.html

python 安全编码&代码审计:

http://bbs.ichunqiu.com/thread-16770-1-1.html

结语

本帖旨在帮助大家更好更系统的学习代码审计,大家有任何建议望不吝赐教,

下期技术专题调研:

我们将在这两天确定下周的技术专题,大家有想学习的指定的技术可以留言申请,我们会根据需求来调整策划专题,感谢大家支持啦!

PHP代码审计中你不知道的牛叉技术点的更多相关文章

  1. 年度酷工作---高级数据工程师(公司靠谱,技术强悍,产品牛叉,福利有干货) 关键词:7000万用户、五星级厨师、住房补助 - V2EX

    年度酷工作---高级数据工程师(公司靠谱,技术强悍,产品牛叉,福利有干货) 关键词:7000万用户.五星级厨师.住房补助 - V2EX 年度酷工作---高级数据工程师(公司靠谱,技术强悍,产品牛叉,福 ...

  2. 在A*寻路中使用二叉堆

    接上篇:A*寻路初探 GameDev.net 在A*寻路中使用二叉堆 作者:Patrick Lester(2003年4月11日更新) 译者:Panic 2005年3月28日 译者序 这一篇文章,是&q ...

  3. Android中通过进程注入技术改动广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:B ...

  4. 《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

  5. Android中通过进程注入技术修改广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了如何通过进程的注入技术修改广播接收器的优先级,关于这个应用场景是很多的,而且也很重要,所以就很急的去fixed了. Android中的四大组件中有一个广播:Broa ...

  6. 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处

    (转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...

  7. 【Cocos2d-x游戏开发】Cocos2d-x中的数据存储技术

    一.引言 数据存储和网络功能可以说是一款游戏中必不可少的功能,如果一款游戏不能保存进度那么它的可玩性必然大打折扣(试想一下,玩家辛辛苦苦玩了一整天的游戏,结果退出时告诉人家不能保存关卡信息,你明天还得 ...

  8. OpenGL中实现双缓冲技术

    在OpenGL中实现双缓冲技术的一种简单方法: 1.在调用glutInitDisplayMode函数时, 开启GLUT_DOUBLE,即glutInitDisplayMode(GLUT_RGB | G ...

  9. Android中的接口回调技术

    Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James ...

随机推荐

  1. ShineTime - 带有 CSS3 闪亮特效的缩略图相册

    ShineTime 是一个效果非常精致的缩略图相册,鼠标悬停到缩略图的时候有很炫的闪光效果,基于 CSS3 实现,另外缩略图也会有立体移动的效果.特别适用于个人摄影作品,公司产品展示等用途,快来来围观 ...

  2. Android中的FragmentManager的问题

    Fragment是构成灵活UI的重要部分.最近学习到Fragment的使用时候,碰到一个问题.主程序程序布局非常简单: <?xml version="1.0" encodin ...

  3. SQL--空值处理

    --为空 SELECT * FROM dbo.Product WHERE Price IS NULL --不为空 SELECT * FROM dbo.Product WHERE Price IS NO ...

  4. 关于IE6中做兼容的那点事。

    前言 对于程序员来说,一听到你做的程序必须兼容IE6(当然主流浏览器肯定得兼容的),那颗滚烫的心瞬间哇凉哇凉的,但是有时,项目就要求这样,你也只能硬着头皮跟IE6来个亲密接触,最近正好做了个项目,关于 ...

  5. Winform防止程序重复运行

    需求:1.点击“关闭”按钮时,程序最小化到托盘,并没有退出,这时再次运行程序,不会重复运行,而是显示已运行的程序:2.支持不同目录:3.支持修改名称. 代码(不支持修改名称,不支持不同目录): usi ...

  6. Android去掉listView,gridView等系统自带阴影

    当我们使用listView的时候,拉到顶,或是拉到底部的时候,我们会发现有系统自带的阴影效果出现,不同手机出现的颜色可能还会不一样. 在以前我始终都有注意到此问题,一直以为是系统自带的,不能去掉.也没 ...

  7. 【UWP】不通过异常判断文件是否存在

    从WP升到WinRT(Win8/WP8.1/UWP)后所有的文件操作都变成StorageFile和StorageFolder的方式,但是微软并没有提供判断文件是否存在的方法通常的做法我们可以通过下面方 ...

  8. iOS学习笔记——触控与手势

    触控 此部分内容已学良久,恨记之甚晚,忙矣,懒矣!本文简而记焉,恐日后忘也. 在iOS的触控事件中,有触控.事件以及响应者这三个角色,一个触摸则代表了一只手指和屏幕接触这个动作所包含的信息:而事件则包 ...

  9. c#单例模式的实现

    单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供. 实现要点: 1.是单例模式的类只提供私有的构造函数.   2.是类定义中含有一个该类的静态私有对象. 3.是该类提供了一个静态的共 ...

  10. Vimium 下载 像个 Geek 一样去浏览

    插件地址(被墙):https://chrome.google.com/webstore/detail/dbepggeogbaibhgnhhndojpepiihcmeb 本地下载:http://file ...