当前位置: 首页 > news >正文

Code-Audit(代码审计)习题记录6-7

 介绍:

自己懒得搭建靶场了,靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习,可以随地访问,本文所有的题目均来源于网站HSCSEC-Code Audit

6、习题6

题目内容如下:

 源代码如下:

<?php   if (isset($_GET['view-source'])) { header('Location: http://challenge1.xa.honyasec.com/index.php'); show_source(__FILE__); exit(); } 
if (isset($_POST["submit"]))   
{ if (isset($_POST['hihi'])) { if (ereg("^[a-zA-Z0-9]+$", $_POST['hihi']) === FALSE) { exit('<script>alert("have fun:)")</script>'); } elseif (strlen($_POST['hihi']) < 11 && $_POST['hihi'] > 999999999) { if (strpos($_POST['hihi'], '#HONG#') !== FALSE) { if (!is_array($_POST['hihi'])) { include("flag.php"); echo "Congratulations! FLAG is : ".$flag; } else { exit('<script>alert("nonono")</script>'); } } else { exit('<script>alert("nonono")</script>'); } } else { exit('<script>alert("sorry")</script>'); } } 
} 
?> 
<a href="?view-source">view-source</a>  
代码分析:

通过代码分析,需要POST提交两个参数一个是submit 一个是hihi并且submit 在前,hihi在后。提交submit 的值无所谓,给一个值就好。

主要是hihi 参数,hihi参数的长度不能大于等于11,而且hihi的值要大于999999999 也就是最小是 1000000000 这样 hihi 的值的长度也就达到10了,所以用科学计数法绕过为 1e9,另外strpos()函数 需要拼接 #HONG# 也就是 1e9#HONG# 但是这样就不能算做数值大于999999999,前面正好有ereg("^[a-zA-Z0-9]+$", $_POST['hihi'] ,进行正则匹配。但是ereg() 可以用%00 截断绕过。 所以最后构造的paylaod 是

POST   #形式提交数据 
submit=1&hihi=1e9%00#HONG#    #data

提交之后,拿到flag ,该网站没有成功,估计靶场没有搭建好,重要的是思路

7、习题7

题目内容如下

源代码如下:

<?php 
include "flag.php"; 
$_403 = "Access Denied"; 
$_200 = "Welcome Admin"; 
if ($_SERVER["REQUEST_METHOD"] != "POST") die("BugsBunnyCTF is here :p..."); 
if ( !isset($_POST["flag"]) ) die($_403); 
foreach ($_GET as $key => $value) $$key = $$value; 
foreach ($_POST as $key => $value) $$key = $value; 
if ( $_POST["flag"] !== $flag ) die($_403); 
echo "This is your flag : ". $flag . "\n"; 
die($_200); 
?>

分析代码后发现,如果要拿到flag 必须满足三个if 的条件,1、请求方法必须包含POST请求,2、并且必须提交必须有flag参数,3、POST提交的flag 的值要和$flag相等。

首先根本不知道$flag 的值是多少,但是后面有一个die($200);同时,含有foreach()函数可以进行变量覆盖,通过die($200)输出$flag 的值。

接着分析,发现了有两个foreach() 函数,所以在echo 函数输出的时候,输出的变量 $flag 是被覆盖过的。结合第一个foreach的功能,我们可以在第二个foreach之前先将$_200的值覆盖为原$flag的值,这样最后die($200)就会输出相当于die($flag)

变量覆盖漏洞解释:

通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。

例如下面的例子

<?php $name='thinking'; foreach($_GET as $key=>$value) $$key = $value; var_dump($key); 
var_dump($value); 
var_dump($$key); 
echo $name; ?> 

如果给与参数?name=test 那么 $key=name $$key=test

最后输出如下

所以本题目,如果借助die($200)输入flag 需要将$flag的值赋值给 $200,同时需要POST 提交一个flag 的值

构造如下:
?$_200=flag 
flag=1           #POST

flag{xiaodalsdhasuyytajds}

当然,也可以借助die($_403)输出flag

if ( $_POST["flag"] !== $flag ) die($_403);

 构造如下

?_403=flag&_POST=1   # 利用第一个foreach函数将_403的值覆盖,同时构造满足$_POST["flag"] !== $flag将变量_POST给覆盖,从而初始化第二个foreach函数flag=                #POST方式将$flag的值

flag{xiaodalsdhasuyytajds} 

相关文章:

Code-Audit(代码审计)习题记录6-7

介绍&#xff1a; 自己懒得搭建靶场了&#xff0c;靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习&#xff0c;可以随地访问&#xff0c;本文所有的题目均来源于网站HSCSEC-Code Audit 6、习题6 题目内容如下&#xff1a; 源代…...

go 的使用总结

go的内存逃逸&#xff1f; go语言在编辑阶段通过逃逸分析把分配在栈上变量 分配到堆上去。 栈内存&#xff1a; 一段连续的内存&#xff0c;便于高效运行指令过程中的临时变量存储。 堆内存&#xff1a; 主要由垃圾回收器 回收没有被引用的指针。 逃逸分析&#xff1a;栈内…...

无线水电表智能化管理系统

无线水电表智能化管理系统是一项利用先进技术对水电用量进行实时监测和精细管理的创新系统。这一系统通过应用无线通讯技术&#xff0c;实现了水电表数据的远程传输和集中管理&#xff0c;为用户提供了便捷、精准的用能监测和管理服务。 无线水电表智能化管理系统的首要优势在于…...

发掘效率黑科技:Allure报告助您事半功倍提升测试效能!

Allure 简介与安装 Allure 是由 Java 语⾔开发的⼀个轻量级&#xff0c;灵活的测试报告⼯具。 Allure 多平台的 Report 框架。 Allure ⽀持多语⾔&#xff0c;包括 python、JaveScript、PHP、Ruby 等。 可以为开发/测试/管理等人员提供详尽的的测试报告&#xff0c;包括测试…...

Spring Web 过滤器使用常见错误(上)

我们都知道&#xff0c;过滤器是 Servlet 的重要标准之一&#xff0c;其在请求和响应的统一处理、访问日志记录、请求权限审核等方面都有着不可替代的作用。在 Spring 编程中&#xff0c;我们主要就是配合使用ServletComponentScan 和 WebFilter 这两个注解来构建过滤器。 说起…...

【数据结构】周末作业

1.new(struct list_head*)malloc(sizeof(struct list_head*)); if(newNULL) { printf("失败\n"); return; } new->nextprev->next; prev->nextnew; return; 2.struct list_head* pprev->next; prev->nextp->next; p->next->prevpr…...

java 企业培训管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 企业培训管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

在SAP HANA中使用OData(二)

通常有两种方式通过OData来暴露SAP HANA中的数据库对象&#xff0c;一是直接使用Database Object&#xff0c;比如前一篇和本篇文章介绍的例子&#xff0c;这种方式针对于数据已经存在于SAP HANA中&#xff0c;在Repository中没有对应的设计时对象(Design-time Object)&#xf…...

【Docker】前端基于dockerfiel构建镜像部署,实现在容器启动时传递环境变量, 请求不同服务地址

前端部署采用 docker 的方式&#xff0c; 实现在容器启动时传递环境变量&#xff0c; 请求不同服务地址 实现思路&#xff1a; 定义.env.xxx 文件&#xff08;环境变量赋值&#xff09;&#xff0c;在compose.yml中引入.env.xxx 文件&#xff0c;环境变量通过nginx的sub_filte…...

评估测试接口软件与网站的使用方法及优劣势比较

评估测试接口软件与网站的使用方法及优劣势比较 导言 在软件开发和测试过程中&#xff0c;对接口进行测试是至关重要的一步。测试接口的软件和网站提供了各种工具和方法&#xff0c;以便开发人员和测试人员能够有效地测试他们的应用程序接口。本文将探讨几种常见的测试接口软…...

【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)

文章目录 1. 介绍2. 实例使用2.1 登录界面2.2 对比两次密码是否相同2.3 通过按钮显示当前输入的密码&#xff08;并对2.2进行优化&#xff09;2.4 结语 3. 正则表达式3.1 QRegExp3.2 验证输入内容 4. 资源代码 1. 介绍 关于 QLineEdit 的详细介绍&#xff0c;可以去查阅官方文…...

Spring Boot 和 Spring Cloud: 区别与联系

Spring Boot 和 Spring Cloud: 区别与联系 在当今软件开发领域&#xff0c;微服务架构和快速开发成为了主流趋势。Spring框架作为Java生态系统中最流行的开发框架之一&#xff0c;也不例外地推出了Spring Boot和Spring Cloud这两个项目来满足这些需求。本文将详细探讨它们之间…...

9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;游戏底层功能对接类GameProc的实现 码云地址&#xff08;master 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/titan 码云版本号&#xff1a;44c54d30370d3621c1e9ec3d7fa1e2a0…...

vue - - - - - vue3使用draggable拖拽组件

vue3使用draggable拖拽组件 一、组件安装二、插件使用三、遇到的问题1. missing required prop&#xff1a; “itemKey” 一、组件安装 yarn add vuedraggablenext // or npm i -S vuedraggablenext二、插件使用 <template><draggableitem-key"id"class&q…...

PHP语言常见面试题:请解释一下PHP是什么,以及它的主要用途是什么?

PHP&#xff0c;英文全称为Hypertext Preprocessor&#xff0c;中文名称为“超文本预处理器”。它是一种通用的开源脚本语言&#xff0c;特别适用于Web开发领域。PHP最初是由Rasmus Lerdorf在1995年创建的&#xff0c;并且自那时以来&#xff0c;它已经发展成为一个功能强大且易…...

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 &#xff08;类似坐标&#xff09; 向量:既有大小&#xff0c;也有方向。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米&#xff09; 向量的模:向量的大小。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米、只取一百米…...

TypeScript+React Web应用开发实战

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在现代Web开发中&#xff0c;React和TypeScrip…...

android开发电子书,android基础编程

内存泄漏是什么&#xff1f; 内存泄漏即 ML &#xff08;Memory Leak&#xff09; 指 程序在申请内存后&#xff0c;当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象 内存泄漏有哪些情况&#xff0c;对应的解决方案&#xff1f; 内存泄漏的原因归根到底就是当需…...

2024-02-25 Unity 编辑器开发之编辑器拓展6 —— Event

文章目录 1 Event 介绍2 重要 API3 代码示例 1 Event 介绍 ​ Event 提供许多属性和方法&#xff0c;允许检查和处理用户输入&#xff0c;主要用于 Unity 编辑器拓展开发。 ​ Input 相关内容需要在运行时才能监听输入&#xff0c;而 Event 专门提供给编辑模式下使用&#xf…...

DC-DC降压芯片用于直流充电桩,具备3A的输出电流能力,输入电压6~40VDC——D2576

随着新能源汽车的不断普及&#xff0c;如何解决新能源车充电的问题也成为大热话题&#xff0c;充电桩的数量与质量也是目前急需提升的热门方面&#xff0c;现阶段人们需要的充电桩主要有交流充电桩和直流充电桩&#xff0c;直流充电桩因其节能效率高、功率因数高、充电快、逐渐…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数&#xff0c;如果我们没有定义实现某个中断函数&#xff0c;那么当stm32产生了该中断时&#xff0c;就会默认跑这里来了&#xff0c;所以我们打开了什么中断&#xff0c;一定要记得实现对应的系统中断函数&#xff0c;否则会进来一直循环…...