php题解(巩固基础知识)代码审计

news2024/12/24 11:30:29

1.[NISACTF 2022]easyssrf

1)进入环境后,他给了一个上url个文本框

2)看了源码,没啥用,那就直接跟着它提示走,输入一个网址http://127.0.0.1/flag.php

3)回显又给了/fl4g,直接file///fl4g查看

4)接着回显给了后缀为php的文件,直接打看

5)发现是一段php代码

 <?php

highlight_file(__FILE__);
error_reporting(0);

$file = $_GET["file"];
if (stristr($file, "file")){
  die("你败了.");
}

//flag in /flag
echo file_get_contents($file); 
  1. 这时候就需要进行仔细的代码审计

  2. 这里使用 highlight_file(__FILE__)函数; 将当前文件的源代码高亮显示输出,使得用户可以查看代码。

  3. 然后又使用 error_reporting(0)函数; 禁用了PHP错误报告,这意味着如果运行出现错误,脚本就不会将错误信息显示给用户。

  4. 然后才是这题关键地方,$_GET 超全局数组中获取名为 file 的参数,并将其赋值给变量 $file。接着使用 stristr() 函数检查用户提供的文件参数中是否包含字符串 "file",如果存在,则程序终止执行,并输出字符串 "你败了."。查阅后才知道 这应该是为了防止用户尝试读取系统上的其他敏感文件。

  5. 最后,通过 file_get_contents() 函数读取用户提供的文件,并将文件内容输出给用户

6)说来说去它其实就是想告诉我们要用filter伪协议读取根目录下的flag

尝试编写/?php://filter/read=convert.base64-encoude/resource=/flag,得到flag

2.[SWPUCTF 2022 新生赛]ez_ez_php

1)进入环境2)进来是直接的php代码,进行代码审计

这里它大致的意思应该是说如果 URL 中包含名为 file 的 GET 参数,它会尝试包含该参数指定的文件。如果文件名以 "php" 开头(使用 substr() 函数检查),则输出 "Nice!!!" 并包含该文件。如果文件名不以 "php" 开头,则输出 "Hacker!!"。

substr(string,start<,length>)从string 的start位置开始提取字符串

注意:
substr中的start为负数时返回空值,  substr从字符串右侧截取字符的方法, substr除了有字段截取的功能外,还可以用来替换字段。

根据php代码的大致意思加上代码最后给了flag.php.这里还是要用get传参的方式再利用filter伪协议读取文件内容

?file=php://filter/read=convert.base64-encoude/resource=flag

3.[NSSCTF 2022 Spring Recruit]babyphp

1)进入环境

2.进行代码审计

它大致的意思应该是

然后需要先过第一个if,需要a不含数字而且intval取整数

注:通过使用指定的进制 base 转换(默认是十进制),返回变量 value 的 int 数值。 intval() 不能用于 object,否则会产生 E_WARNING 错误并返回 1。 echo intval(array()); // 0 echo intval(array('foo', 'bar')); // 1

所以这里传入一个数组就能过掉第一个if,a[]=1

    然后开始绕过第二个if条件,第二个很简单,就直接传入b1和b2就好了,那么往下看第三个if条件,意思是传入的b1条件不等于b2,与md5加密的b1等于b2,这个在很多题目上都用到了,因为md5不会处理数组,面对数组都会返回为null所以使用b1[]=1&b2[]=2

b1[]=1&b2[]=2
md5(b1[]=1)===md5(b2[]=1)

   接下来就是第4个if语句了,这个的话需要传入c1和c2,且c1不等于c2,还要满足条件c1和c2都要是字符串类型, c1和c2的md5加密是弱类型,所以前两位相同就可以,要传入值是字符串且md5值相等

这里是弱比较,用0e绕过,下面是0e开头的md5值

3.可以构造payload为a[]=1&b1[]=1&b2[]=2&c1=QNKCDZO&c2=QLTHNDT

上传即可得到flag

4.[SWPUCTF 2022 新生赛]funny_php

1)进入环境后依旧是熟悉的php代码

先进行代码审计

如果参数 num 存在且满足特定条件,则输出 :D 并设置会话变量 $_SESSION['L1'] 为 1。

如果参数 str 存在,则对其进行处理,如果等于特定字符串 "NSSCTF",则输出 "wow" 并设置会话变量 $_SESSION['L2'] 为 1。

接下来,根据 POST 请求中的参数执行不同的操作:如果参数 md5_1 和 md5_2 存在,并且它们不相等,且它们的 MD5 散列值相等,则输出 "Nice!" 并在进一步检查参数的类型后,设置会话变量 $_SESSION['L3'] 为 1。

最后,如果三个会话变量 $_SESSION['L1']$_SESSION['L2'] 和 $_SESSION['L3'] 都存在,则包含 flag.php 文件并输出flag。

2)审完之后就一步一步来

长度要小于3,值要大于999999999,绕过使用科学计数法方式,即9e9=9000000000

3)然后到str值,说是要强等于NSSCTF并且在此之前会被替换为空,那正好满足双写绕过

4)接着到下一个循环,根据代码所写,这里又是常见的弱比较,这里我用的是0e绕过 

post传参后得到flag

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

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

相关文章

微服务:Ribbon负载均衡与加载时机修改

Ribbon 负载均衡 执行流程 负载均衡策略 调整负载均衡方案&#xff1a; 配置类中&#xff08;全局&#xff09;&#xff1a; // 负载均衡策略Beanpublic IRule randomRule() {return new RandomRule();}yaml配置 userservice: # 给某个微服务配置负载均衡规则&#xff…

【UE HTTP】“BlueprintHTTP Server - A Web Server for Unreal Engine”插件使用记录

1. 在商城中下载“BlueprintHTTP Server - A Web Server for Unreal Engine”插件 该插件的主要功能有如下3点&#xff1a; &#xff08;1&#xff09;监听客户端请求。 &#xff08;2&#xff09;可以将文件直接从Unreal Engine应用程序提供到Web。 &#xff08;3&#xff…

elementui中 表格使用树形数据且固定一列时展开子集移入时背景色不全问题

原来的效果 修改后实现效果 解决- 需要修改elementui的依赖包中lib/element-ui.common.js中的源码 将js中此处代码改完下面的代码 watch: {// dont trigger getter of currentRow in getCellClass. see https://jsfiddle.net/oe2b4hqt/// update DOM manually. see https:/…

Oracle体系结构初探:数据库启动与停止

往期内容 参数管理 控制文件添加 启动 在启动Oracle数据库时&#xff0c;我们一般会使用如下命令&#xff1a; startup 虽然命令只有一个&#xff0c;但其中却是经历了3个阶段&#xff0c;从下面执行 startup 命令返回也可以看出来。 总结为3个阶段&#xff1a; nomount&…

【Unity2D 2022:Cinemachine】相机跟随与地图边界

一、导入Cinemachine工具包 1. 点击Window-Package Manager&#xff0c;进入包管理界面 2. 点击All&#xff0c;找到Cinemachine工具包&#xff0c;点击Install 二、相机跟随角色 1. 选中Main Camera&#xff0c;点击Component-Cinemachine-CinemachineBrain&#xff0c;新建…

【stm32/CubeMX、HAL库】嵌入式实验五:定时器(2)|PWM输出

参考&#xff1a; 【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p13&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c3989f6189fd3 《嵌入式系统基础与实践》刘黎明等编著&#xff0c;第九章定时器&#xff0c…

亚洲AI核心资产,商汤科技!全球最优秀的医疗大模型平台——“大医”。

今天会给大家详解下商汤的AI产品“大医”。 —、什么是“大医”&#xff1f;&#xff08;行业模型&#xff09; “日日新.大医”是一款具备创新精神的医疗健康领域大语言模型。该模型通过内置的“场景集市”模块&#xff0c;提供了13个预设医疗场景的应用&#xff0c;同时还能…

Golang——reflect(反射)

反射是指在程序运行期间对程序本身进行访问和修改的能力。 一. 变量的内在机制 变量包含类型信息和值信息类型信息&#xff1a;是静态的元信息&#xff0c;是预先定义好的值信息&#xff1a;是程序运行过程中动态改变的 二. 反射的使用 reflect包封装了反射相关的方法获取类型…

冯喜运:5.23黄金市场风云变幻,黄金原油美盘趋势分析

【黄金消息面分析】&#xff1a;在经历了一段时期的强劲上涨后&#xff0c;黄金市场似乎迎来了调整期。北京时间周四(5月23日)&#xff0c;国际黄金价格连续第三个交易日下跌&#xff0c;目前交投在2365美元附近&#xff0c;较周一触及的纪录高点2449.89美元已下跌约4%。这一跌…

知识分享|非凸问题求解方法及代码示例【分类迭代】【大M法】

主要内容 之前发布了非线性问题线性化的几种方法&#xff0c;如知识分享|分段函数线性化及matlab测试&#xff0c;学习园地 | yalmip实用操作-线性化&#xff0c;非线性优化 | 非线性问题matlabyalmip求解案例&#xff0c;但是在实际建模及编程过程中&#xff0c;会遇到各种…

vue+canvas实现逐字手写效果

在pc端进行逐字手写的功能。用户可以在一个 inputCanvas 上书写单个字&#xff0c;然后在特定时间后将这个字添加到 outputCanvas 上&#xff0c;形成一个逐字的手写效果。用户还可以保存整幅图像或者撤销上一个添加的字。 <template><div class"container"…

【B站 heima】小兔鲜Vue3 项目学习笔记

系列文章目录 Day 01 目录 系列文章目录前言Day011.项目使用相关技术栈2. 项目规模和亮点3. Vue2和Vue3实现一个小案例4. vue3的优势5. create-vue脚手架工具6. 熟悉我们的项目目录和文件7. 组合式API-setup选项8. 组合式API-reactive和ref函数9. 组合式API-computed计算属性…

动态IP与静态IP有什么区别?如何选择?

动态IP和静态IP都是指网络设备&#xff08;如计算机、服务器、路由器等&#xff09;在互联网上分配的IP地址的类型。 一、什么是动态IP&#xff0c;什么是静态IP&#xff1f; 1、什么是动态IP&#xff1f; 动态IP是指由Internet服务提供商&#xff08;ISP&#xff09;动态分配…

xrdp多用户多控制界面远程控制

1、无桌面安装桌面&#xff08;原本有ubuntu桌面的可以直接跳过这一步&#xff09; Gnome 与 xfce 相比&#xff0c;xfce 由于其轻巧&#xff0c;它可以安装在低端台式机上。Xfce 优雅的外观&#xff0c;增强了用户体验&#xff0c;它对用户非常友好&#xff0c;性能优于其他桌…

docker- 购建服务镜像并启动

文章目录 前言docker- 购建服务镜像并启动1. 前期准备2. 构建镜像3. 运行容器4. 验证 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实…

扩散模型自动管道AutoPipeline

推荐&#xff1a;write_own_pipeline.ipynb - Colab (google.com) 为您的任务选择一个 AutoPipeline 首先选择一个检查点。例如&#xff0c;如果您对使用 runwayml/stable-diffusion-v1-5 检查点的文本到图像感兴趣&#xff0c;请使用 AutoPipelineForText2Image&#xff1a; f…

linux ping https是否连接

在Linux系统中&#xff0c;ping通常用于测试网络上另一台主机的可达性。它使用的是ICMP协议&#xff0c;这是一种设计用来处理网络通信问题的协议。HTTPS则是一种安全的网络传输协议&#xff0c;它使用SSL/TLS加密。 如果你想要测试到某个HTTPS服务器的连接&#xff0c;你可以使…

【MySQL精通之路】InnoDB(6)-磁盘结构(2)-索引

主博客&#xff1a; 【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-CSDN博客 上一篇&#xff1a; 下一篇&#xff1a; 【MySQL精通之路】磁盘上的InnoDB结构-表空间-CSDN博客 目录 1.聚集索引和二级索引 1.1 Innodb 如何建立聚集索引 1.2 聚集索引如何加快查询速度 1…

CustomTkinter:便捷美化Tkinter的UI界面(附模板)

CustomTkinter是一个基于Tkinter的Python用户界面库。 pip3 install customtkinter它提供了各种UI界面常见的小部件。这些小部件可以像正常的Tkinter小部件一样创建和使用&#xff0c;也可以与正常的Tkinter元素一起使用。 它的优势如下&#xff1a; CustomTkinter的小部件和…

四天学会JS高阶(学好vue的关键)——深入面向对象(理论+实战)(第三天)

***本章面试使用居多* 理论篇**一、编程思想 1.1 面向过程 JS 前端居多 按照步骤 性能高 适合跟硬件关系很紧密 没有面向对象易维护易复用易扩展 1.2 面向对象 java典型 按照功能&#xff0c;把事务分别成一个个对象&#xff0c;对象之间分工合作 比较灵活 适合多人合作的…