php伪协议、代码审计工具和实战

1、安装fortify并以pikachu靶场为目标进行练习熟练使用fortify

2、复习php代码审计函数精讲相关内容,重点是SESSION验证绕过、urldecode二次编码绕过、str_replace绕过


urldecode⼆次编码绕过。攻ji者利用这个漏dong的关键在于,他们对想要注入的字符(如单引号 ')进行两次URL编码。

单引号 '的一次编码:%27

单引号 '的二次编码:对%27中的每个特殊字符再次编码。即,对%编码为%25,得到 %2527

经过这个精心构造的输入会经历以下阶段:

第一次解码(通常由Web服务器自动完成):%2527被解码为 %27。此时,简单的安全检测如果只查找 '字符,会认为这是无害的%27普通字符串而放行。

第二次解码(由应用程序代码调用 urldecode()函数触发):%27被再次解码,最终还原为攻ji者真正想要注入的单引号 '。

这个过程使得危险的字符绕过了初始的安全过滤。

经典场景:路径遍历gong击

利用方式:

?file=%252E%252E%252Fetc%252Fpasswd

安全检查时:%252E%252E%252Fetc%252Fpasswd(不包含".../")

第一次urldecode:%2E%2E%2Fetc%2Fpasswd

服务器最终解析:.../etc/passwd
URL编码参考手册

经典场景二:SQl注入绕过

利用方式:编码单引号为%2527,解码后最终变成'

经典场景三:XSS攻ji绕过

利用方式:

?content=%253Cscript%253Ealert(1)%253B%253C%252Fscript%253E

最后变成alert(1)

str_replace绕过

经常出现在字符过滤等功能逻辑中,由于仅仅过滤⼀次,因此容易被绕过。

仅替换 .../ 不够安全,攻ji者可能使⽤ ...// 或 ...\ (Windows) 绕过

建议:使⽤ realpath() 或专⻔的路径规范化函数

3、复习php伪协议

先看file://协议

作⽤:

⽤于访问本地⽂件系统,在CTF中通常⽤来读取本地⽂件的且不受 allow_url_fopen 与 allow_url_include 的影响。include()/require()/include_once()/require_once() 参数可控的情况下,如导⼊为⾮ .php ⽂件,则仍按照php语法进⾏解析,这是 include() 函数所决定的。


接下来看php://协议




自测a可以,b没反应,b过目一下就好

自测a可以,b没反应,b过目一下就好,c也可以

data://的ab方法都可以

http:// & https:// 也可以

phar://协议运行也可以

4、搭建并部署微商城系统并结合fortify审计文件上传漏dong

fortify扫描查看文件上传lou洞情况,分析原理

构造简单上传表单,并上传简单的phpinfo

抓包修改上传文件content-type

并发送请求,得到响应ok

访问上传文件

相关推荐
毕设源码-邱学长34 分钟前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°1 小时前
PHP框架漏洞
开发语言·php
炸膛坦客2 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
兑生2 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
炸膛坦客4 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲4 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin4 小时前
Quarto与Python集成使用
开发语言·python·markdown
2401_831824964 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~5 小时前
【C++小游戏】2048
开发语言·c++
Sunshine for you5 小时前
C++中的职责链模式实战
开发语言·c++·算法