天涯论坛

 找回密码
 立即注册
搜索
查看: 13|回复: 1

php代码审计(适合小白入门)

[复制链接]

3048

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109040
发表于 2024-11-3 10:06:21 | 显示全部楼层 |阅读模式

通用代码审计思路:

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()函数查询字符串在另一字符串第1显现的位置

注释:strops()函数对体积敏锐

​ 该函数是二进制安全的

strpos(string,find,start)

1

数 描述

string 必需。规定要搜索的字符串。

find 必需。规定要查询的字符串。

start 可选。规定在何处起始搜索。

返回值: 返回字符串在另一字符串中第1显现的位置,倘若找到字符串则返回 FALSE。**注释:**字符串位置从 0 起始,不是从 1 起始

PHP 版本: 4+

ereg正则函数

字符串比对解析

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

1

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

比对结果返回的值放在数组参数 regs 之中,regs[0] 内容便是原字符串 string、regs[1] 为第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

1

2.

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

1

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

3.

?a=240610708或?a=s878926199a

————————————————

版权声明:本文为CSDN博主「4v1d」的原创文案,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/weixin_51213906/article/details/120042763




上一篇:SQL注入进阶篇一php代码审计
下一篇:PHP 代码审计之 SQL 注入
回复

使用道具 举报

3047

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065852
发表于 2024-11-9 15:15:06 | 显示全部楼层
我完全同意你的看法,期待我们能深入探讨这个问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 05:26 , Processed in 0.094698 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.