SQL注入

审计语句  【输入参数】

SELECT,DELETE,UPDATE,INSERT

防御

转义:

1、开启gpc:判断解析用户提示的数据

2、mysql_real_escape_string():转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

3、addslashs():使用反斜线引用字符串

string addslashes ( string $str )

4、关键字过滤

CSRF

审计:敏感表单是否使用token验证(还有token是否随机)

防御

1、验证HTTP Referer字段(可能存在绕过,最好使用下面两种方法)

2、在请求地址中添加token并验证

3、在HTTP头中自定义属性并验证

动态函数与匿名函数

动态:函数与函数之间的调用,可能会产生漏洞

静态:允许临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。【create_function:创建匿名函数】

unserialize反序列漏洞

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。

unserialize函数被用于将格式化字符串内的对象进行实例化,在反序列化期间,每个解析元素都有一个索引号,号码从1开始。

mixed unserialize ( string $str )

1、unserialize()中的参数可控

2、脚本中存在一个构造函数、析构函数、__wakeup()函数中有类

3、对象中的成员变量的值

反序列化的变量会覆盖类中变量的值

变量覆盖漏洞

原因:

1、是 register_globals 为 on 的情况,PHP4 默认开启,PHP5 以后默认关闭

2、人为注册了全局变量

全局变量的取值与赋值

文件管理漏洞

PHP 的用于文件管理的函数,如果输入变量可由用户提交,程序中也没有做数据验证,可能成为高危漏洞

常用函数

copy():拷贝文件

bool copy ( string $source , string $dest [, resource $context ] )

将文件从 source 拷贝到 dest

如果要移动文件的话,请使用 rename() 函数。

rmdir():删除目录

bool rmdir ( string $dirname [, resource $context ] )

尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。

unlink():删除文件

bool unlink ( string $filename [, resource $context ] )

删除 filename。和 Unix C 的 unlink() 函数相似

delete():删除文件,类似unlink()与rmdir()

void delete ( void )

fwrite():写入文件(可安全用于二进制文件)

int fwrite ( resource $handle , string $string [, int $length ] )

fwrite()string 的内容写入 文件指针 handle 处。

chmod():改变文件模式

bool chmod ( string $filename , int $mode )

尝试将 filename 所指定文件的模式改成 mode 所给定的。

fgetc():从文件指针中读取字符

string fgetc ( resource $handle )

从文件句柄中获取一个字符。

fgetcsv():从文件指针中读入一行并解析 CSV 字段

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]]] )

从文件指针中读取一行,fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。

fgets():从文件指针中读取一行

string fgets ( resource $handle [, int $length ] )

fgetss():从文件指针中读取一行并过滤掉 HTML和PHP标记

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

file():把整个文件读入一个数组中

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

file_get_contents():将整个文件读入一个字符串

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容

fread():读取文件(可安全用于二进制文件)

string fread ( resource $handle , int $length )

fread() 从文件指针 handle 读取最多 length 个字节

readfile():输出一个文件

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

读入一个文件并写入到输出缓冲。

ftruncate():将文件截断到给定的长度

bool ftruncate ( resource $handle , int $size )

接受文件指针 handle 作为参数,并将文件大小截取为 size

file_put_contents():将一个字符串写入文件

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

fputcsv():将行格式化为 CSV 并写入文件指针

int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )

fputs():fwrite() 的别名

fopen():打开文件或者 URL

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

文件上传漏洞

审计函数:move_uploaded_file():将上传的文件移动到新位置

bool move_uploaded_file ( string $filename , string $destination )

相关的超全局变量$_FILES

防御

1、使用白名单方式检测文件后缀

2、上传之后按时间能算法生成文件名称

3、上传目录脚本文件不可执行

4、注意%00截断

5、Content-Type 验证

PHP代码审计3-SQL注入,CSRF,动态函数执行与匿名函数执行,unserialize 反序列化漏洞,变量覆盖,文件管理,文件上传的更多相关文章

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

  2. 反射型XSS+文件上传+CSRF—DVWA

    在学习的过程中,想到将几种漏洞进行组合练习,记录下学习过程.大佬请绕过!谢谢!! 测试环境:DVWA,安装方法参考上一篇:https://www.cnblogs.com/aq-ry/p/9220584 ...

  3. 代码审计之SQL注入:BlueCMSv1.6 sp1

    Preface 这是一篇纪录关于BlueCMSv1.6 sp1两个SQL注入的审计过程,原文来自代码审计之SQL注入:BlueCMSv1.6 sp1 ,主要纪录一下个人在参考博文复现这两个漏洞经过. ...

  4. PHP代码审计之SQL注入

    代码审计之SQL注入 SQL注入攻击(SQLInjection),是攻击者在表单中提交精心构造的sql语句,改变原来的sql语句,如果web程序没有对提交的数据经过检查,那么就会造成sql注入攻击. ...

  5. 代码审计之SQL注入

    0x00概况说明 0x01报错注入及利用 环境说明 kali LAMP 0x0a 核心代码 现在注入的主要原因是程序员在写sql语句的时候还是通过最原始的语句拼接来完成,另外SQL语句有Select. ...

  6. DoraBox sql注入&文件上传

    SQL注入 1.sqli数字型 判断是否存在注入点,执行1 and 1=1,有回显判断存在注入点 判断字段数,执行1 order by 3以及执行1 order by 4时报错,判断字段数为3 判断具 ...

  7. 代码审计之XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)

    0x00 前言 这段时间就一直在搞代码审计了.针对自己的审计方法做一下总结,记录一下步骤. 审计没他,基础要牢,思路要清晰,姿势要多且正. 下面是自己审计的步骤,正在逐步调整,寻求效率最高. 0x01 ...

  8. [代码审计]XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)

    0x00 前言 这段时间就一直在搞代码审计了.针对自己的审计方法做一下总结,记录一下步骤. 审计没他,基础要牢,思路要清晰,姿势要多且正. 下面是自己审计的步骤,正在逐步调整,寻求效率最高. 0x01 ...

  9. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

随机推荐

  1. Gremlin--一种支持对图表操作的语言

    Gremlin 是操作图表的一个非常有用的图灵完备的编程语言.它是一种Java DSL语言,对图表进行查询.分析和操作时使用了大量的XPath. Gremlin可用于创建多关系图表.因为图表.顶点和边 ...

  2. SQLSERVER 2008 R2 事务日志已满

    方法一: USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName ...

  3. Django QuestSet API (官方文档)

    1.返回新查询集的方法 (1)filter():滤指定条件的结果 Entry.objects.filter(pub_date__gt=datetime.date(2005, 1, 3), headli ...

  4. mybatis怎样自动生成java类,配置文件?

    其实没有什么东西是可以自动生成的,只不过是别人已经写好了,你调用罢了. 所以想要mybatis自动生成java类,配置文件等,就必须要一些配置和一些jar包.当然这些配置也很简单. 为了有个初步的认识 ...

  5. Apache服务器开启gzip压缩的支持

    为什么要在服务器上开启压缩?其实,服务器上开启压缩,对整个网站的就是在服务器上把网页的内容压缩后传给客户端,客户端解压后再显示网页的内容.实际就是增加了服务器端和客户端的工作量,减少了网络传输的数据量 ...

  6. Linux 初学者:移动文件

    你学习了有关目录和访问目录的权限是如何工作的.你在这些文章中学习的大多数内容都可应用于文件 -- Paul Brown 在之前的该系列的部分中, 你学习了有关目录 和 访问目录 的权限 是如何工作的. ...

  7. Bean的初始化和销毁

    在我们实际开发的时候,经常会遇到在Bean在使用之前或者之后做些必要的操作,Spring对Bean的生命周期的操作提供了支持.在使用Java配置和注解配置下提供如下两种方式.    1.Java配置方 ...

  8. 【洛谷P1314】[NOIP2011]聪明的质监员

    聪明的质监员 题目链接:https://www.luogu.org/problemnew/show/P1314 Y(W)随W的值增大而减小 二分W的值,找到最小的W使得Y(W)>S: 比较Y(W ...

  9. IBM区块链总经理谈区块链

    IBM区块链总经理谈区块链:3.4年前IBM的区块链人员就达到了1500人  Captain Hiro 2018-03-20 16:22 发布在 区块链 3 18349 CCN的记者Eric Eiss ...

  10. REST Adapter实现SAP PI中的增强XML/JSON格式转换(转载)

    SAP标准的REST adapter有着XML/JSON转换的功能,它很有用,因为一方面SAP PI/PO内部以XML格式处理数据,而另一方面,在处理REST架构风格的时候,JSON才是事实上的格式. ...