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

news2024/12/23 14:02:52

介绍:

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

1、习题一 

题目内容如下:


1wMDEyY2U2YTY0M2NgMTEyZDQyMjAzNWczYjZgMWI4NTt3YWxmY= 
<?php 
 
error_reporting(0); 
require __DIR__.'/lib.php'; 
 
echo base64_encode(hex2bin(strrev(bin2hex($flag)))), '<hr>'; 
 
highlight_file(__FILE__);

 

查看题目,发现是对$flag 参数进行了一系列加密,得到字符1wMDEyY2U2YTY0M2NgMTEyZDQyMjAzNWczYjZgMWI4NTt3YWxmY= 因此,如果要还原成flag 就必须对加密的字符串,一一解密。即 base64_decode() -> bin2hex()->strrev()->hex2bin()

因此,撰写代码如下:

<?php 
$s = "1wMDEyY2U2YTY0M2NgMTEyZDQyMjAzNWczYjZgMWI4NTt3YWxmY="; 
echo(hex2bin(strrev(bin2hex(base64_decode($s))))) 
?>

放在php 代码运行平台运行得到flag

在线运行PHP

flag{582a0f2c7e302244b110cc461f5cb100}

2、习题二

题目内容如下

<?php 
error_reporting(0); 
require __DIR__.'/lib.php'; 
if(isset($_GET['time'])){ 
  if(!is_numeric($_GET['time'])){ 
    echo 'The time must be number.'; 
  }else if($_GET['time'] < 60 * 60 * 24 * 30 * 2){ 
    echo 'This time is too short.'; 
  }else if($_GET['time'] > 60 * 60 * 24 * 30 * 3){ 
    echo 'This time is too long.'; 
  }else{ 
    sleep((int)$_GET['time']); 
    echo $flag; 
  } 
  echo '<hr>'; 
} 
highlight_file(__FILE__);

分析代码后,发现,只有当传入参数time的值必须为数字,而且值的大小必须介于在60 * 60 * 24 * 30 * 2=5,184,000 和60 * 60 * 24 * 30 * 3=7,776,000之间,才能拿到flag,比如说6000000 但是这样就直接sleep 的三个月,恰好科学计数法 6000000= 6e6满足数据要求,而且只需要sleep 6秒即可,因此构造payload 如下

?time=6e6

得到flag{yhngdasdaaljlj} 

3、习题三

题目内容如下:

但是只是显示了这一个英文字母,查看一下源码,发现有一个index.txt

 访问一下index.txt,发现了代码

<?php 
error_reporting(0); 
echo "<!--index.txt-->"; 
require __DIR__.'/lib.php'; 
if(!$_GET['id']) 
{ 
    header('Location: index.php?id=1'); 
    exit(); 
} 
$id=$_GET['id']; 
$a=$_GET['a']; 
$b=$_GET['b']; 
if(stripos($a,'.')) 
{ 
    echo 'Hahahahahaha'; 
    return ; 
} 
$data = @file_get_contents($a,'r'); 
if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4) 
{ 
    echo $flag; 
} 
else 
{ 
    print "work harder!harder!harder!"; 
} 
?>

分析代码,首先初始化会跳转 index.php?id=1 然后 得到三个参数 id,a, b, 如果a的值包含有. 就输出Hahahahahaha,然后不含. 就得到内容定义参数为data 。

如果data的值是1112 is a nice lab! 并且id==0 b 的值的长度大于5 ,eregi("111".substr($b,0,1),"1114") 用111拼接完b的值的第一个字母后的值在1114中 ,要么b的首个字符为4要么为空,并且b的第一个字母的值不能是4 那么只能为空,然后输出flag

解法

1、对于id 的值来说,是一个数字,有$id==0,这里利用弱类型比较可以传字符也可以用0e去绕过,为了使id==0可以给id一个字符 比如 id=abc

2、对于b来说,如果b的第一个字符拼接完111后满足正则 1114 ,并且b的首个字符不能为4 ,因此可以用%00截断,因为 %00的长度为 1 所以b=%0012345 满足长度大于5

eregi 函数在较旧版本的PHP中用于执行不区分大小写的正则表达式匹配。

3、对于a来说,可以使用$a可以使用伪协议php://input也可以用data类型url$a=php://input   

#然后POST一个内容为1112 is a nice lab!的body ,也可以使用 $a=data:,1112 is a nice lab!    #data类型url

$a 使用data类型url 构造如下

?id=abc&a=data:,1112 is a nice lab!&b=%0012345

flag{dsayandahckasda}

使用伪协议php://input

?id=abc&a=php:%2f%2finput&b=%250012345

 

flag{dsayandahckasda} 

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

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

相关文章

2024pytest自动化测试框架学习(三)

在自动化测试中我们经常会针对某些测试方法编写前置测试数据&#xff0c;当测试方法执行完毕后再清理这些测试数据。之前我们接触的unittest框架中&#xff0c;使用setUp、tearDown方法来解决前置数据、后置数据销毁的问题。pytest为我们提供了更加强大灵活的fixtrue来完成该实…

《Solidity 简易速速上手小册》第8章:高级 Solidity 概念(2024 最新版)

文章目录 8.1 高级数据类型和结构8.1.1 基础知识解析更深入的理解实际操作技巧 8.1.2 重点案例&#xff1a;构建一个去中心化身份系统案例 Demo&#xff1a;创建去中心化身份系统案例代码DecentralizedIdentityContract.sol 测试和验证拓展案例 8.1.3 拓展案例 1&#xff1a;管…

MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)

MedicalGPT 训练医疗大模型&#xff0c;实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)。 MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型&#xff0c;实现了包括增量预训练、有监督微…

我为什么不喜欢关电脑?

程序员为什么不喜欢关电脑&#xff1f; 你是否注意到&#xff0c;程序员们似乎从不关电脑&#xff1f;别以为他们是电脑上瘾&#xff0c;实则是有他们自己的原因&#xff01;让我们一起揭秘背后的原因&#xff0c;看看程序员们真正的“英雄”本色&#xff01; 一、上大学时。 …

AP5216 降压恒流 全亮 半亮9W 车灯手电筒 性价比方案

AP5216 是一款 PWM工作模式, 高效率、外 围简单、内置功率管&#xff0c;适用于5V&#xff5e;100V输入的高 精度降压 LED 恒流驱动芯片。输出功率可达 9W&#xff0c;电流 1.0A。AP5216 可实现全亮/半亮功能切换&#xff0c;通过 MODE 切换&#xff1a;全亮/半亮 模式。AP5216…

《小程序商城定制:为你打造独特的线上商业帝国》

在当今数字化的时代&#xff0c;拥有一个定制的小程序商城已经成为了许多企业和个人创业者的首要任务。小程序商城作为一种轻量级的移动应用&#xff0c;具有无需下载、使用方便、传播迅速等优势&#xff0c;为用户提供了更加便捷的购物体验。而通过定制小程序商城&#xff0c;…

linux部署jenkins,支持jdk1.8

无废话&#xff0c;纯干活安装指令 本文前提条件需安装jdk8&#xff0c;安装参考&#xff1a;Linux配置jdk环境 下载资源 # 创建安装目录 mkdir -p /data/jenkins && cd /data/jenkins# 下载jenkins的war包&#xff0c;v2.346.x支持jdk1.8&#xff0c;高于这个版本的…

书生·浦语大模型实战营第四节课作业

基础作业 fintune过程 这里要注意下。 合并完参数的模型再进行网页部署时&#xff0c;需要用到InternLM源码&#xff0c;教程里面忽略了需要commit版本。通过以下命令转到所需版本&#xff0c;然后就可以看到web_demo.py。 cd InternLM git checkout 3028f07cb79e5b1d7342f4…

ping 8.8.8.8和ping www.baidu.com都OK,但是打不开网页

ping 8.8.8.8和ping www.baidu.com都OK&#xff0c;但是打不开网页 打开设置 -> 网络 找到IPV4, DNS栏输入 8.8.8.8 , apply 设置里界面变成这样 然后网页就能加载了

EPS-HiL转向硬件在环测试方案

1、项目背景 为提升研发能力&#xff0c;深入研究电动助力转向系统(EPS)功能&#xff0c;拟搭建EPS硬件在环测试设备。本设备可进行多种EPS相关测试实验。 2、需求分析 本方案中被测EPS如下图&#xff0c;为转向杆式电动助力转向器&#xff08;C-EPS&#xff09;&#xff0c…

Apache Flink连载(三十一):Flink基于Kubernetes部署(1)-Kubernetes介绍

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录

【多线程】Java线程的几种状态详解

线程的状态 1 观察线程的所有状态2 线程状态和状态转移的意义3 观察线程的状态和转移 1 观察线程的所有状态 线程的状态是⼀个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State state : Thread.State.values()) …

利用故事推动企业变革:如何提升数据分析技能

单一的数据和表格尽管有算法的支撑&#xff0c;但在其表达方式上总会让人感到头疼。当我们需要深入了解企业的盈利能力&#xff0c;或是尝试评估业务的增长机会时&#xff0c;以往都会将精力全部放在分析数字、阅读信息、回顾历史和沟通交流之上&#xff0c;却忽略随之而生成的…

【中创:抢抓机遇,乘势而上】AI引爆算力需求,算力市场或将持续供不应求

2030年人类将迎来YB数据时代&#xff0c;全球算力总规模达到56ZFlops&#xff0c;其中智能算力达到52.5ZFlops&#xff0c;在算力需求中占绝对主导地位。 AI大模型迭代速度越来越快&#xff0c;各大厂商对智能算力投入大幅增加&#xff0c;支持存储和训练的高端AI服务器的需求…

基于Java+SpringBoot的旅游路线规划系统(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能实现 1.1 前端首页模块的实现 1.2 景点新闻 1.3 景点在线预订 1.4 酒店在线预订 1.5 管理员景点管理 1.6 管理员旅游线路管理 1.7 酒店信息管理 三、库表设计 前言 随着我国的经济的不断发展&#xff0c;现在的一些热门的景…

雷卯推荐多种8KW以上TVS二极管

一、 应用 TVS 二极管应用广泛&#xff0c;如消费电子产品、汽车工业、弹药、电信、航空航天工业和智能控制系统。 二、雷卯推荐系列产品列表&#xff1a; 以上仅是部分产品推荐&#xff0c;更多产品请联系leiditech 三、 封装尺寸数据 四、雷卯国产化替代表 部分展示 上海…

深究 DevOps 与平台工程的区别

今天&#xff0c;我们将讨论平台工程和 DevOps 的关系。尽管这两个概念有一些共同点&#xff0c;但它们仍然是截然不同的&#xff0c;我们将具体了解它们之间的区别。本文旨在解释当代软件工程中的这两个基本概念。通过实际案例&#xff0c;我们将分别说明这两个方法如何塑造了…

svn tortoiseSVN没有显示更新后的log

同事更新了svn提交 自己打开文件发现文件没有更新&#xff0c;而且log显示也没用更新 需要勾选log界面下的这个 显示同事提交合并的修改

自学python?一般人我还是劝你算了吧!

自我介绍 本人其实属于一枚屌丝&#xff0c;在真正开始学python之前&#xff0c;其实也就是对电脑的认知只限于上个网&#xff0c;玩个office办公软件。废话不多说&#xff0c;我为啥说自学python&#xff0c;一般人我还是劝你算了吧。因为我就是那个不一般的人。 基础真的很…

JavaScript中手动实现Array.prototype.map方法

在前端开发中&#xff0c;我们经常需要对数组进行操作和处理。在JavaScript中&#xff0c;数组是常用的数据类型之一。而数组的map方法可以将一个数组中的每个元素都进行某种操作&#xff0c;并返回一个新的数组。今天&#xff0c;我们就来手动实现JavaScript中数组原型的map方…