Code-Audit(代码审计)习题记录4-5

4、习题4

题目内容如下:

<?php  
error_reporting(0); 
show_source(__FILE__); 
 
$a = @$_REQUEST['hello']; 
eval("var_dump($a);"); 
函数解释

$REQUEST — HTTP Request 变量,默认情况下包含了 [$GET],[$POST] 和 [$COOKIE]的数组。

var_dump() var_dump() 函数用于输出变量的相关信息。var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

eval() 函数把字符串当作php 代码来执行

代码分析

总的来说就是eval函数来执行命令,从而获取flag。但是var_dump() 函数执行后,无法被eval函数当作php代码执行,因此,需要在var_dump() 函数执行的之后,就完成类似于 whoami这样的命令执行。

理解测试:

执行下面的代码,会直接打印字符

php -r "eval(var_dump('whoami'));" 

但是 反引号位 (`) 是可以执行命令的

因此执行下面代码,会输出root 等用户名

php -r "eval(var_dump(`whoami`));"

所以可以构造执行命令,查找当前含有flag 的文件,然后读物文件来获取flag

构造ls命令,获取当前目录文件 index.php和lib.php

?hello=`ls`

读取 lib.php 文件的内容

?hello=`cat lib.php`

显示内容长度为41,但是没有看到内容,右键查看源代码,得到flag ,原来是被注释掉了

 

flag{yczxtsadjadljada}

使用tac 命令,可以直接输出flag

 5、习题5

题目内容如下

 

代码如下:

<?php 
if (isset($_GET['name']) and isset($_GET['password'])) { 
    if ($_GET['name'] == $_GET['password']) 
        echo '<p>Your password can not be your name!</p>'; 
    else if (sha1($_GET['name']) === sha1($_GET['password'])) 
      die('Flag: '.$flag); 
    else 
        echo '<p>Invalid password.</p>'; 
} 
else{ 
	echo '<p>Login first!</p>'; 
?>

经过代码分析,可以知道,首先GET 传入两个值,一个name 另一个password 首先就是这两个参数的值不一样,不然$GET['name'] == $GET['password'] 就会报错,接着,name和password 的sha1 的值要相等,并且这个相等采用了 === ,即不能采用弱类型比较===只有在相同类型下,才会比较其值。这样满足条件后,才能输出flag

函数解释:

die() 函数输出一条消息,并退出当前脚本。该函数是exit()函数的别名。

有意思的是 sha1不能处理数组,构造paylaod

 name[]=1&password[]=2

当我们传入name[]=1&password[]=2时,会造成sha1(Array) === sha1(Array),即NULL===NULL,从而吐出flag

Flag: flag{tczdaljdasnqw}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git合并固定分支的某一部分至当前分支

在 Git 中&#xff0c;通常使用 git merge 命令来将一个分支的更改合并到另一个分支。如果你只想合并某个分支的一部分代码&#xff0c;可以使用以下两种方法&#xff1a; 1.批量文件合并 1.1.创建并切换到一个新的临时分支 首先&#xff0c;从要合并的源分支&#xff08;即要…

S281 LoRa网关助力智慧城市建设的智能交通管理

S281 LoRa网关作为智慧城市建设中的重要组成部分&#xff0c;发挥着关键的作用&#xff0c;特别是在智能交通管理方面。通过连接各类传感器设备和物联网终端&#xff0c;S281 LoRa网关实现了对城市交通系统的远程监控、智能调度和信息化管理&#xff0c;为城市交通管理部门提供…

学习鸿蒙基础(5)

一、honmonyos的page路由界面的路径 新建了一个page,然后删除了。运行模拟器的时候报错了。提示找不到这个界面。原来是在路由界面没有删除这个page。新手刚接触找了半天才找到这个路由。在resources/base/profile/main_pages.json 这个和微信小程序好类似呀。 吐槽&#xf…

MKS T3BI集成蝶阀说明T3B-T3PRS-232Supplement

MKS T3BI集成蝶阀说明T3B-T3PRS-232Supplement

常见的排序算法整理

1.冒泡排序 1.1 冒泡排序普通版 每次冒泡过程都是从数列的第一个元素开始&#xff0c;然后依次和剩余的元素进行比较&#xff0c;若小于相邻元素&#xff0c;则交换两者位置&#xff0c;同时将较大元素作为下一个比较的基准元素&#xff0c;继续将该元素与其相邻的元素进行比…

人工智能_CPU安装运行ChatGLM大模型_安装清华开源人工智能AI大模型ChatGlm-6B_004---人工智能工作笔记0099

上一节003节我们安装到最后,本来大模型都可以回答问题了,结果, 5分钟后给出提示,需要GPU,我去..继续看官网,如何配置CPU运行 没办法继续看: https://github.com/THUDM/ChatGLM-6B 这里是官网可以看到 需要gcc的版本是11.3.0,这里我们先没有去安装,直接试试再说 yum instal…

在UE5中使用OverlayMaterial制作多材质效果

UE5.1中新增了OverlayMaterial&#xff0c;可以让物体套用2个材质球效果&#xff0c;如A材质球为正常材质内容&#xff0c;B材质球为菲涅尔&#xff0c;或是B材质球是法线外拓描边等&#xff0c;该功能类似Unity的多pass效果&#xff0c;方便了日常使用。 下面就讲将怎么用Ove…

手把手教你如何搭建性能测试环境

前言 在进行性能则试前&#xff0c;需要完成性能测试的搭建工作&#xff0c;一般包括硬件环境、软件环境及网络环境&#xff0c;可以要求配置和开发工程师协助完成&#xff0c;但是作为一个优秀性能测试工程师&#xff0c;这也是你的必备技能之一。 性能测试环境与功能测试环…

4款文案神器,为你写作高质量文案

4款文案神器&#xff0c;为你写作高质量文案!在当今信息爆炸的时代&#xff0c;写作成为了一项重要的技能&#xff0c;无论是在工作中、学习中还是生活中&#xff0c;我们都需要用文字来传达信息、表达想法。然而&#xff0c;要写出高质量的文案并非易事&#xff0c;需要不断地…

开源软件的影响力及未来发展趋势

开源软件的影响力 在当今数字化时代&#xff0c;开源软件已经成为技术创新、商业模式和安全风险等方面不可或缺的一部分。本文将从开源软件如何推动技术创新、开源软件的商业模式、开源软件的安全风险、开源软件的未来发展趋势以及开源软件在各行业的应用案例几个方面进行深入…

如何利用Shopee卖家中心资源和策略进行有效选品?

在Shopee卖家中心进行选品是提高产品市场竞争力和销售业绩的关键环节。为了帮助卖家更好地利用Shopee提供的资源和策略进行选品&#xff0c;以下是一些实用建议&#xff1a; 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#xff08;复制浏览器打开&#xff09;&a…

【力扣hot100】刷题笔记Day7

前言 身边同学已经陆陆续续回来啦&#xff0c;舍友都开始投简历了&#xff0c;我也要加油啦&#xff01;刷完hot100就投&#xff01; 73. 矩阵置零 - 力扣&#xff08;LeetCode&#xff09; 标记数组&#xff1a;空间复杂度O(mn) class Solution:def setZeroes(self, matrix:…

第十七届“挑战杯”广东大学生课外学术科技作品比赛感想

博主曾在2023年参加了第十七届“挑战杯”广东大学生课外学术科技作品比赛&#xff0c;也就是人们俗称的大挑&#xff0c;在团队赛里面含金量应该是排在第一档的了&#xff0c;当初我们有幸作为学校唯一一支科技创新B类进入到线下答辩&#xff0c;线下答辩就是区分银奖和金奖和特…

设计模式-创建型模式-抽象工厂模式

抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无须指定它们具体的类。抽象工厂模式又称为Kit模式&#xff0c;它是一种对象创建型模式。 由于工厂方法模式中的每个工厂只生产一类产品&…

MySQL锁相关总结|悲观锁、乐观锁、读锁、写锁、表锁、行锁、页面锁、间隙锁、临键锁

MySQL锁总体结构 MySQL 的锁上可以分成三类:总体、类型、粒度。 总体上分成两种:乐观锁和悲观锁类型上也是两种:读锁和写锁锁的粒度上可以分成五种:表锁,行锁,页面锁,间隙锁,临键锁下面我们就来详细讲一下这些锁 1. 悲观锁 悲观锁对于数据库中数据的读写持悲观态度,即…

阿里同学聊测试开发与测试平台

在一线大厂&#xff0c;没有测试这个岗位&#xff0c;只有测开这个岗位&#xff0c;即使是做业务测试&#xff0c;那么你的title也是测开。 所以想聊一聊测开的看法&#xff0c;但不代表这是正确的看法&#xff0c;仅供参考。 没来阿里之前我对测开的看法 一直以为专职做自动…

信钰证券:特斯拉掉队,英伟达冲锋!

截至当地时间2月16日收盘&#xff0c;美股三大指数上周累跌&#xff0c;结束五周连涨。其中&#xff0c;道指累计下跌0.11%&#xff0c;标普500指数周内跌幅为0.42%&#xff0c;以科技股为主的纳指则累跌1.34%。美股“科技七巨头”上周多数累跌&#xff0c;谷歌跌超5%&#xff…

【Node.js】介绍、下载及安装

一、什么是 Node.js Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端的应用程序 前端工程化&#xff1a;开发项目直到上线&#xff0c;过程中集成的所有工具和技术 Node.js 是前端工程…

基于python-socket构建任务服务器(基于socket发送指令创建、停止任务)

在实现ia业务服务器时需要构建一个python-socket客户端&#xff0c;1、要求能与服务器保持心跳连接&#xff0c;每10秒钟发送一次心跳信号&#xff1b;2、要求能根据socket服务器发送的指令创建或终止一个定时任务。 为此以3个类实现该功能&#xff0c;分别为socket通信类&…

ONLYOFFICE编辑器升级大揭秘:v8.0版新特性实测与评价

ONLYOFFICE编辑器升级大揭秘&#xff1a;v8.0版新特性实测与评价 一个人简介二前言三操作步骤创建房间我的文档 四开发人员工具应用程序接口Javascript开发工具包插件SDK网络钩子 五测评总结六体验地址 一个人简介 &#x1f3d8;️&#x1f3d8;️个人主页&#xff1a;以山河作…