PHP代码审计前期准备

1 php代码审计的意义

1.1 什么是代码审计

就是获取目标的代码,这个目标可以是一个网站,也可以是一个手机app

1.2 黑盒测试与白盒测试的区别

在代码审计中黑盒和白盒的主要区别就在于是否可以拿到源代码,黑盒是拿不到源代码的,白盒是可以拿到的

1.3 是否应该学习代码审计

测试流程必不可少的一部分 突破渗透测试的瓶颈 参与众测,赢取高额奖金

1.4 代码审计,需要学到什么程度

不需要像安全研究人员一样,挖掘到一些0day,才说明大家学会代码审计

2 PHP代码审计入门必备知识

2.1 代码审计需要使用那些软件

Seay源代码审计系统 快速函数定位 自定义多窗口搜索 MySQL执行监控 一键调试选中代码 文档自动查询 自动审计

2.2 PHP代码审计流程

2.2.1 通读全文法

通读全文法作为最麻烦的方法也是最全面的审计方法,特别是大型的项目,通读全文也是了解整个项目,了解业务逻辑最好方法,了解整个项目,这样也可以挖掘到更多的中高危漏洞

2.2.2 敏感函数参数回溯法

这个方法是最有效的,最常用的方法,大多数漏洞的产生是因为函数的使用不当导致的,我们可以全局搜索一些敏感函数,看看是否有未经过滤的参数传进来,就可以挖掘漏洞,这里我们也可以使用Seay源代码审计系统

2.2.3 定向功能分析法

这个方法主要是根据程序的业务逻辑来进行代码审计的 查看网站的功能,大概推测可能存在那些漏洞

常见的功能漏洞 程序初始安装 文件上传 数据库备份 找回密码 验证码

2.3 PHP服务架构

CLI(在命令行中运行) PHP Built-in Webserver Apache php_mod Swoole

2.4 PHP安全配置

magic_quotes_gpc:5.3后废弃,5.4后移除 register_global:4.2后默认为false allow_url_include:默认false allow_url_fopen:默认false request_order:5.3后从GPC改为GP short_open_tag:5.4以后,无论是否开启,<?=..?>总是可以被执行 open_basedir:限制PHP可以访问到那些目录,哪些目录不能访问 disable_functions/disable_classes:限制PHP不能执行那些函数或者类 enable_dll:是否允许加载PHP扩展

3 PHP危险函数归纳

3.1 函数归纳

include/require/include_once/require_once eval/assert/preg_replace/create_function system/passthru/exec/shell_exec file_get_contents/fread/readfile/file/show_source file_put_contents/fwrite/mkdir unlink/rmdir move_uploaded_file/copy/rename extract/parse_str simplexml_load_files/simplexal_load_string unserialize urldecode/base64_decode

3.2 代码执行函数

eval 把字符串作为PHP代码执行,很多常见的webshell都是用eval来执行具体操作的 assert 也是把字符串作为PHP代码执行 preg_replace 是正则表达式函数

3.3 包含函数

文件包含函数主要作用为包含并运行指定文件 include $file,如果$file可控的情况下,我们就可以包含任意文件了,从而达到getshell的目的 包含函数也能够读取任意文件内容,这就需要用到支持的协议和封装协议和过滤器

3.4命令执行函数

exec() 执行一个外部程序 system() 执行外部程序,并且显示输出 只要命令就能执行的参数可控系统命令

3.5 文件操作函数

copy:拷贝文件 file_get_contents:将整个文件读入一个字符串 file_put_contents:将一个字符串写入文件 unlink:删除文件 rmdir:删除目录

3.6 一些有漏洞的应用练习

XZ.Aliyun.com Github.com Wooyun镜像站点漏洞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交叉编译——

什么是交叉编译 交叉编译 是在一个平台上生成临海一个平台可执行代码. eg.在windows上面编写C51代码&#xff0c;并编译生成可执行代码。如xx.hex 我们在Ubuntu上编写树莓派的代码&#xff0c;并编译成可执行代码。a.out. 是在树莓派上运行&#xff0c;不在Ubuntu Linux上面运…

便携式iv测试仪特点

TH-PV30便携式IV测试仪是一种用于测量半导体器件电学特性的设备&#xff0c;它具有体积小、重量轻、便于携带等特点&#xff0c;广泛应用于半导体行业、科研实验室以及教育领域。 该测试仪的工作原理基于四探针法&#xff0c;通过在半导体器件表面放置四个金属探针&#xff0c…

【vs2022】安装copilot和reshaper

直接安装新版vs 17.10 自带集成的copilot支持安装resharper 可以跳过市场里的reshper安装好后依然可以直接使用vs。 resharper 2024.1.2 市场里还是i老版本&#xff1a; copilot 不兼容,这个是之前市场安装的版本 官方建议用vs intall 安装 安裝 GitHub Copilot GitHub.Co…

详解http协议

什么是HTTP协议 定义 Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。 它定义了浏览器&#xff08;即万维网客户进程&#xff09;怎样向万维网服务器请求万维网文档&#xff0c;以及服务器怎样把文档传送给浏览器。从层次的角度看&#xff0c;HTTP是面向&am…

第四十一天 | 62.不同路径 63.不同路径|| 343.整数拆分 96.不同的二叉搜索树

题目&#xff1a;62.不同路径 1.二维dp数组dp[i][j]含义&#xff1a;到达&#xff08;i&#xff0c;j&#xff09;位置有dp[i][j]种方法。 2.动态转移方程&#xff1a;dp[i][j] dp[i - 1][j] dp[i][j - 1] 3.初始化&#xff1a;dp[0][j] 1, dp[i][0] 1 &#xff08;第一…

Vue3设置缓存:storage.ts

在vue文件使用&#xff1a; import { Local,Session } from //utils/storage; // Local if (!Local.get(字段名)) Local.set(字段名, 字段的值);// Session Session.getToken()storage.ts文件&#xff1a; import Cookies from js-cookie;/*** window.localStorage 浏览器永…

uniapp 安卓 Pc端真机浏览器调试

下载插件:真机模拟浏览器 1. 安装, 每次启用时使用usb 线连接电脑, 并且打开手机或者POS (调试设备)开发者模式, 比如我的是pos 机 则在系统设置中找到版本号,点击多次就会触发开发者模式 2.打开真机模拟软件,打开后会打开一个浏览器,如果想要模拟google的浏览器则 在浏览器地…

精准键位提示,键盘盲打轻松入门

在说明精准键位提示之前&#xff0c;我们先来看一张图&#xff1a; 这是一张标准的基准键位图&#xff0c;也就是打字时我们双手的8个手指放在基准键位上&#xff0c;在打不同的字母时&#xff0c;我们的手指以基准键位为中心&#xff0c;或上、或下、或左、或右&#xff0c;在…

202109青少年软件编程(Python)等级考试试卷(四级)

第 1 题 【单选题】 执行如下 Python 代码后, 结果是?( ) def inverse(s,n=0): while s:n = n * 10 + s % 10s = s // 10return nprint

《拯救大学生课设不挂科第二期之Windows11下安装VC6.0(VC++6.0)与跑通Hello,World!程序教程》【官方笔记】

背景与目标人群&#xff1a; 大学第一次学C语言的时候&#xff0c;大部分老师会选择VC6这个编辑器。 但由于很多人是新手&#xff0c;第一次上大学学C语言。 老师要求VC6.0&#xff08;VC6.0&#xff09;写C语言跑程序可能很多人还是第一次接触电脑。 需要安装VC6这个编辑器…

Docker常用软件安装

文章目录 1.安装Tomcat1.docker hub查找镜像并复制拉取镜像命令2.拉取镜像到本地1.执行官网命令2.查看是否拉取成功 3.启动tomcat4.退出和重启1.由于是以交互方式启动的&#xff0c;所以不方便&#xff0c;直接ctrl c退出2.查看当前的容器3.使用docker start 命令启动容器&…

【cocos creator 】生成六边形地图

想要生成一个六边形组成的地图 完整代码示例 以下是完整的代码示例&#xff0c;包含了注释来解释每一步&#xff1a; cc.Class({extends: cc.Component,properties: {hexPrefab: {default: null,type: cc.Prefab},mapWidth: 10, // 网格的宽度&#xff08;六边形的数量&am…

前端React老项目打包caniuse-lite报错解决思路

1、下载项目&#xff0c;先更新.npmrc文件&#xff1a; registryhttp://registry.npmmirror.com 2、安装依赖&#xff0c;本地启动&#xff0c;运行正常&#xff0c;但直接提交代码线上打包时会报错&#xff1a; “ 未找到相关的合并请求。” 打开日志页面&#xff0c;报错信息…

【Flutter】线性布局弹性布局层叠布局

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月25日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

4、PHP的xml注入漏洞(xxe)

青少年ctf&#xff1a;PHP的XXE 1、打开网页是一个PHP版本页面 2、CTRLf搜索xml&#xff0c;发现2.8.0版本&#xff0c;含有xml漏洞 3、bp抓包 4、使用代码出发bug GET /simplexml_load_string.php HTTP/1.1 补充&#xff1a; <?xml version"1.0" encoding&quo…

内网穿透--Nps-自定义-上线

免责声明:本文仅做技术交流与学习... 目录 Nps项目: 一图通解: 1-下载nps/npc 2-服务端启动 访问web网页: 添加客户端&#xff0c;生成密匙. 3-kali客户端连接服务端 4-添加协议隧道. 5-kali生成后门&#xff1a; 6-kali创建监听: Nps项目: https://github.com/ehang…

蓝桥杯Web开发【模拟题一】15届

1.动态的Tab栏 日常在使用移动端 APP 或访问 PC 端网站的时候&#xff0c;常常发现在一些有工具栏或者 Tab 栏的页面会有顶栏固定的效果。简单来说&#xff0c;在页面未开始滚动时顶栏处在其原有的位置上&#xff0c;当页面向下滚动一定区域后&#xff0c;顶栏会跟随滚动固定在…

HTTPS证书——网站如何实现HTTPS访问?

实现网站HTTPS访问可以简化为以下四个基本步骤&#xff0c;确保过程既通俗易懂又条理清晰&#xff1a; 1. 申请SSL证书 - 目的&#xff1a;SSL证书是实现HTTPS加密的关键&#xff0c;它验证了网站的身份&#xff0c;并提供了加密数据所需的密钥。 - 操作&#xff1a;首先&…

超链接的魅力:HTML中的 `<a>` 标签全方位探索!

&#x1f310;超链接的魅力&#xff1a;HTML中的 标签全方位探索&#xff01; &#x1f3de;️基础营地&#xff1a;认识 <a> 标签&#x1f6e0;️基本语法&#x1f4da;属性扩展 &#x1f680;实战演练&#xff1a;超链接的多样玩法&#x1f308;内链与外链&#x1f4c…

TypeScript(持续更新中...)

1.TypeScript是什么&#xff1f; TypeScript是javaScript的超集。 2.使用TypeScript 1&#xff09;全局安装nodejs 2&#xff09;安装TypeScript编译器 npm i -g typescript 3.编译ts文件 //注意&#xff1a;需要在ts文件同级目录执行此命令&#xff0c;否则会报找不到…