php代码审计

本文介绍了PHP代码审计过程中如何绕过各种过滤机制,包括空格过滤、关键字过滤、连接符过滤以及查看符过滤。通过利用${IFS}、%0a、inode节点和数组强比较漏洞等技巧,实现命令注入和文件查看。
摘要由CSDN通过智能技术生成

php审计从题目中的过滤学习绕过

基本介绍:

在进行ping命令执行时,能够通过截断来执行新的命令

根据此原理来进行注入

例:ip=127.0.0.1;ls

空格过滤:

考虑在进行命令注入时,过滤了空格,可以采用${IFS}、$IFS、$ifs$9的局部变量

来表示分隔符,但考虑$IFS直接接字母时可能会被解析成其他变量,所以采用${IFS}固定变量,或$IFS$9采用$9这个空字符来与后面字母分隔开来固定变量

只过滤cat、flag等关键字

如未过滤 " ' \等连接转义符

可以使用""连接符,\ 转义符来间隔字符串从此绕过过滤

过滤 ; | &等连接符

Linux下 ; 可以用%0a替代

例:ctfhub-rce-综合练习过滤了如下字符

preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/"

所以最后的payload为

1%0acd$IFS$1f""lag_is_here%0aca""t$IFS$1f""lag_7548135816224.php

过滤more/tail/less/cat等大部分查看符

使用strings

$a == md5($a)绕过

原理是寻找一个0e开头的字符串其md5值也是0e

如0e215962017

使用 inode 节点查看文件

ls -i可以查看文件的inode号

1321734 1.html

然后可以使用命令find -inum 1321734 | xargs cat来查看文件了

xargs将前面的输出作为管道后面的输入

数组强比较绕过

php5.5版本的数组key一处bug

[0 => 0] === [0x100000000 => 0]为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良人TOP1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值