最近开始啃《代码审计企业级web代码安全架构》这本书,这一章内容看了2天很多内容都理解最主要的是对PHP不熟练所以现在理解了大概 然后进行实地环境搭建最主要的是源码百度真不好找 最后找到一篇也是读这本书的文章上有最后下载了搭建成功测试成功 最后把这篇跟着书上的节奏写下来吧,并附上源码。

 

代码审计思路

(1)   根据敏感关键字回溯参数传递过程。

(2)   查找可控变量,正向追踪变量传递过程。

(3)   寻找敏感功能点,通读功能点代码、

(4)   直接通读全文代码

靶机环境

Phpstudy PHP5.5.38+Apache

espcms_utf8_5.9.14.08.28.zip

链接: https://pan.baidu.com/s/1-WFmn0iY81H8wlL5jKQsaA 提取码: 7cqa

3.1敏感函数回溯参数过程

根据敏感函数来逆向追踪参数的传递过程,是目前使用得最多得一种方式,因为大多数漏洞是由于函数得使用不当造成的。另外非函数使用不当的漏洞,如SQL注入,也有一些特征,比如select、insert等,再结合from和where等关键字,我们就可以判断这是否是一条SQL语句,通过对字符串的识别分析,就能判断这个SQL语句里面的参数有没有使用单引号过滤,或者根据我们的经验来判断。像HTTP头里面的HTTP_CLENT_IP和HTTP_X_FORWORDFOR等获取到的IP地址经常没有安全过滤就直接拼接到SQL语句中,并且由于他们是在$_SERVER变量中不受GPC影响,那我们就可以取查找HTTP_CLENT_IP和HTTP_X_FORWORDFOR关键字来快速寻找漏洞。

 

我们首先打开seay源代码审计工具 点击新建项目 然后点击自动审计会得到一部分可能存在漏洞的代码列表

我们选择其中可能存在SQL注入漏洞的代码 双击即可进入该代码文件内

我们选中这个变$parentid这个变量后可以看到它的传递过程是通过accept()这块传输过来的所以我们定位到这个函数可以看看它这块是如何处理的。

我们选中这个函数右键 选择定位函数这个选项即可进行函数定位

双击打开

这是一个获取GET、POST、COOKIE参数值的函数,我们传入的变量是parentid和R,则代表在POST、GET中都可以获取parentid参数,最后经过一个daddslashes()函数,这个函数实际包装的是addslashes()函数,对单引号等字符进行过滤, 不过我们可以看到我们的SQL注入语句是这样的:

$sql=”selec * from $db_table where parented=$parentid”;

它并不需要我们单引号来进行闭合,于是可以直接注入

在citylist.php文件中我们看到oncitylist()函数在important类中我们选中该类名右键点击 全局搜索 功能。

我们看第45行代码有个include文件的操作,可惜经过addslashes()函数无法进行截断使其包含任意文件,只能包含本地PHP文件 限制我们的目标就是要构造 URL 参数或者某个页面表单参数,来触发 citylist.php 文件里的 oncitylist() 函数进行注入  我们进行实例化类并且调用函数操作 根据代码构造出利用过的EXP

http://127.0.0.1/01/upload/adminsoft/index.php?archive=citylist&action=citylist&parentid=-1

PHP代码审计入门(敏感函数回溯参数过程)的更多相关文章

  1. Python入门篇-函数、参数及参数解构

    Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...

  2. php代码审计入门前必看

    首先先介绍什么是代码审计? 代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术 包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉 2.为什么要进行代码审计, ...

  3. Oracle编程入门经典 第11章 过程、函数和程序包

    目录 11.1          优势和利益... 1 11.2          过程... 1 11.2.1       语法... 2 11.2.2       建立或者替换... 2 11.2 ...

  4. Oracle过程及函数的参数模式,In、out、in out模式

    Oracle过程及函数的参数模式 In.out.in out模式 在Oracle中过程与函数都可以有参数,参数的类型可以指定为in.out.in out三种模式. 三种参数的具体说明,如下图所示: ( ...

  5. plsql programming 17 过程, 函数与参数

    代码模块化, 即将一大块代码拆成若干小块(过程), 然后就可以在其他模块调用这些模块了, 这样, 重用性更好, 也方便管理. 过程: 过程是一个可以像执行 PL/SQL 语句一样调用的程序, 一个过程 ...

  6. Delphi过程函数传递参数的几种方式

    Delphi过程函数传递参数的几种方式  在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out. 另一种不加修饰符的为默认按值传递参数. 一.默认方式以值方式传递参数 proced ...

  7. 【delphi】Delphi过程、函数传递参数的八种方式

    Delphi过程函数传递参数的八种方式

  8. 09-Python入门学习-函数基础与参数

    一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...

  9. 代码审计入门之BlueCMS v1.6 sp1

    0x00 前言 作为一名代码审计的新手,网上的大佬们说代码审计入门的话BlueCMS比较好,所以我就拿BlueCMS练练.(本人实在是一枚新手,请大佬们多多赐教) 0x01 环境准备 Phpstudy ...

随机推荐

  1. 电子阅读器.vbs

    CreateObject("SAPI.SpVoice").Speak"你要说的话!"

  2. 第二十一章 PHP编译安装(centos7)

    一.环境准备 主机 IP 身份 web01 10.0.0.7 编译安装PHP 二.准备安装 1.新建目录 [root@jindada ~]# mkdir /php 2.上传源码包并解压 [root@j ...

  3. 圆形进度条的模仿1-DrawArc,DrawCircle,DrawText讲解

    1:画弧 canvas.drawArc(oval,startAngle,sweepAngle,useCenter,paint) 第一个参数:绘制的区域,oval可以是被定好了的一个区域,也可以将ova ...

  4. mysql You can't specify target table 'sys_right_menu' for update in FROM clause (不能从Objor子句中指定目标表“SysRyType菜单)

    错误语句: DELETE from sys_right_menu where right_id  in (SELECT m.right_id from sys_right_menu  mLEFT JO ...

  5. springcloud中使用dubbo开发rpc服务及调用

    spring cloud中基于springboot开发的微服务,是基于http的rest接口,也可以开发基于dubbo的rpc接口. 一,创建goodsService模块 1, 在创建的goodsSe ...

  6. 【垃圾回收-CMS】Java内存回收实践经验 防止内存报警

    jdk6和7服务器端(-server) 默认的新生代的垃圾回收器为:PS Scavenge,老年代默认的垃圾回收器为:PS MarkSweep 目前项目使用了jdk7,tomcat7,经常出现内存堆使 ...

  7. 【Flutter 混合开发】添加 Flutter 到 Android Activity

    Flutter 混合开发系列 包含如下: 嵌入原生View-Android 嵌入原生View-iOS 与原生通信-MethodChannel 与原生通信-BasicMessageChannel 与原生 ...

  8. Java学习的第五天

    1.值域转化的规则:值域小的类型可以自动转化成值域大的类型,值域大的类型可以强行转化成值域小的类型,但要注意精度,除了基本类型可以转换,引用类型之间也可以转换. 引用类型可以是类,借口,数组. 常见的 ...

  9. Jmeter 用户定义的变量的使用

    第一步: 打开Jmeter软件,新建一个线程组,添加 > 配置元素 > 用户定义的变量 第二步: 设置值,如下图所示: 第三步,使用设置的名称  :

  10. python使用pip安装第三方模块遇到的问题及解决方法

    python使用pip安装第三方模块遇到的问题及解决方法 关注公众号"轻松学编程"了解更多. 使用国内源: 清华:https://pypi.tuna.tsinghua.edu.cn ...