IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php代码审计(适合小白入门) -> 正文阅读

[PHP知识库]php代码审计(适合小白入门)

文章内容来源于:安恒信息

通用代码审计思路:

1.根据敏感关键字回溯参数传递过程(逆向追踪)

? 检查敏感函数的参数,进行回溯变量,判断变量是否可控并且没有经过严格的过滤,这是一个逆向追踪的过程。

2.寻找可控参数,正向追踪变量传递过程(正向追踪)

? 跟踪传递的参数,判断是否存入到敏感函数内或者传递的过程中具有代码逻辑漏洞。

3.寻找敏感功能点,通读功能点代码(直接挖掘功能点漏洞)

? 根据自身经验判断在该应用中的哪些功能可能出现漏洞。

4.直接通读全文代码

敏感函数回溯审计:

在这里插入图片描述

通读全文代码

在这里插入图片描述

在这里插入图片描述

例子:

php弱类型

1.比较符号

== 先进行类型转化,再进行比较(弱比较)

=== 先比较类型,若类型不同直接返回不等(强比较)

Tips

Bool类型的true和任意字符串的弱类型相等

数字与字符串相比较,会将字符串转化为数字

若字符串以数字开头,则取开头数字作为转化结果,

若无则转化为0,若符合科学记数法的形式,则按照科学记数法来取

2.hash比较缺陷

如果采用

== 运算符比较哈希值,会面临上面讲的弱类型比较的问题,

即任何以’0e’ 开头的字符串都相等!

常见的md5

运算后以’0e’开头的字符串有:

QNKCDZO

s878926199a

s155964671a

s1885207154a

s1836677006a

s1184209335a

在这里插入图片描述

3.md5 sha1函数缺陷

当md5()函数与sha1()函数对参数进行加密处理时,

如果碰到一个数组,md5()函数会返回null

sha1()函数也是一样。

利用这个特性构造两个数组即可。

a[]=1即表示传入了一个数组

在这里插入图片描述

变量覆盖

1.parse_str导致的变量覆盖

parse_str( string KaTeX parse error: Expected 'EOF', got '&' at position 23: …_string[.array &?result] )

parse_str() 函数用于把查询字符串解析到变量中,

如果没有result参数,则由该函数设置的变量将覆盖已存在的同名变量,

如果设置了第二个变量result

变量将会以数组元素的形式存入到这个数组,作为替代。

在这里插入图片描述

2.X-Forwarded-For绕过指定地址

HTTP头添加X-Forwarded-For:

3.strops数组绕过NULL与ereg正则%00截断

知识点补充:

PHP strops()函数

定义和用法:

strops()函数查找字符串在另一字符串第一次出现的位置

注释:strops()函数对大小写敏感

? 该函数是二进制安全的

strpos(string,find,start)
描述
string必需。规定要搜索的字符串。
find必需。规定要查找的字符串。
start可选。规定在何处开始搜索。
返回值:返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。**注释:**字符串位置从 0 开始,不是从 1 开始。
PHP 版本:4+

ereg正则函数

字符串比对解析

int ereg(string pattern, string string, array [regs]);

本函数以 pattern 的规则来解析比对字符串 string。

比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。

在这里插入图片描述

方法一:

既要是纯数字

又要有’ #biubiubiu’

strpos()找的是字符串,那么传一个数组给它

strpos()出错返回null,null!==false,

所以符合要求

所以输入nctf[]=

那为什么ereg()也能符合呢?

因为ereg()

在出错时返回的也是null,null!==false,

所以符合要求

方法二:

字符串截断

利用ereg()的NULL截断漏洞,绕过正则过滤

?nctf=1%00%23biubiubiu

模拟演练:

1.

在这里插入图片描述

?password=1337a

2.

在这里插入图片描述

?name[]=1&passsword[]=2

解析:sha1()函数默认的传入参数类型是字符串,当传入数组时均会返回false,通过判断。

3.

在这里插入图片描述

?a=240610708?a=s878926199a
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 11:40:27  更:2021-09-03 11:41:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:39:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码