文章目录

  • 一.解题步骤
  • 二、命令分隔符
  • 三.常见绕过方式

一.解题步骤

(1)页面里显示/?ip=,很明显要以ping的形式传一个参数给ip,并且我们要想执行其他命令,就要用命令分隔符也就是管道符连接,命令分隔符可以用";“”|“”&"三种,本题经过尝试发现第一步查看目录过滤了|,&和空格。
这里介绍两种方式:
1.ping本地127.0.0.1

2.用||来代替127.0.0.1;

(2)虽然找到了放flag的文件,但是尝试后发现都不对,这里介绍一种思路,我们可以通过查看index.php的文件源码来查看源码,从而确认过滤了哪些东西,题目说过滤了命令连接符&,\,空格,*,bash,<>,flag,?,我们得想一些其他方法来绕过

(3)要想得到flag了,我们需要绕过过滤掉的东西
这里介绍三种可以解决的特殊绕过方式:
1.拼接绕过法

else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");

以上是题目给的绕过flag的源码,我们这里需要知道这是正则表达式匹配了ip的值中是否顺序出现了f、l、a、g四个字母。这样一来我们就可以拼接一个flag来绕过了,可以拼接f;lag fl;ag fla;g 但是这里需要注意:本题特殊就特殊在flag的字母顺序要不同(拼接绕过的一个大坑)

y=g;x=fla;$x$y
y=ag;x=fl;$x$y
y=lag;x=f;$x$y

构造payload:/?ip=||y=ag;x=fl;cat$IFS$9$x$y.php跑一下得到flag

2.内联执行法
可以看到代码没有过滤掉符号` 所以可以利用内联执行的方式直接打开flag文件,先执行命令ls,再把ls得到的文件名全部用命令cat打开,构建payload 跑一下,查看源码拿到flag

/?ip=127.0.0.1;cat$IFS$6`ls`或者/?ip=||cat$IFS$6`ls`


3. sh编码绕过法(base64编码)
使用方法:

echo 命令编码|base64 -d|sh

sh可以换成bash, 但是题目过滤掉了
也可以换成其他的编码形式,这里用base64的
空格用$IFS$6替换掉
cat flag.php 的base64编码为Y2F0IGZsYWcucGhw

构造payload , 相当于执行命令cat flag.php,跑一下,查看源码得到flag

/?ip=127.0.0.1;echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh
/?ip=||echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh


二、命令分隔符

1、|(就是按位或),直接执行|后面的语句
2、||(就是逻辑或),如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
3、&(就是按位和),&前面和后面命令都要执行,无论前面真假
4、&&(就是逻辑和),如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
5、;(linux下有的,和&一样的作用)

三.常见绕过方式

此处特别鸣谢Yun 3a0

Buuctf (Web)Ping Ping Ping相关推荐

  1. BUUCTF——web([GXYCTF2019]Ping Ping Ping、[极客大挑战 2019]Knife、[极客大挑战 2019]Http)

    BUUCTF-web [GXYCTF2019]Ping Ping Ping 做题思路 [极客大挑战 2019]Knife 做题思路 [极客大挑战 2019]Http 做题思路 [GXYCTF2019] ...

  2. 全网超详细的如何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 ...

  3. linux命令菜鸟ping,Linux ping命令

    Linux ping命令 Linux ping命令用于检测主机. 执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常. 语 ...

  4. 复制vmware overLay网络无法ping通 ping www.baidu.com可以

    因为忘记关闭防火墙了!!!!!    要永久关闭!! 修改hostname https://blog.csdn.net/qq_27327261/article/details/109100219 关闭 ...

  5. linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏

    简介 在Linux系统里面如果想判断网络的好坏,脑海中蹦出的第一个命令就是ping了. ping命令基本是最常用的网络命令,它可以用来测试与目标主机的连通性. ping通过发送ICMP ECHO_RE ...

  6. 虚拟机ping网关ping不通

    虚拟机ping网关ping不通,可能自己遇到的比较奇特,开始访问正常,过一段时间就不正常,分享一下解决办法: 首先ping同网段的可以ping的通,说明vmnet8的ipv4不和虚拟机配置的vmnet ...

  7. C# ping命令,ping网络状态

    Ping ping = new Ping(); PingReply pingReply = ping.Send("192.168.1.1"); //网络状态 if (pingRep ...

  8. Buuctf -web wp汇总(一)

    Buuctf -web wp汇总(一):链接 Buuctf -web wp汇总(二):链接 持续更新ing~ BuuCTF平台 文章目录 BuuCTF平台 [极客大挑战 2019]EasySQL [极 ...

  9. BUUCTF WEB [BJDCTF2020]ZJCTF,不过如此

    BUUCTF WEB [BJDCTF2020]ZJCTF,不过如此 进入环境后得到源码 <?phperror_reporting(0); $text = $_GET["text&quo ...

  10. BUUCTF Web 极客大挑战 2019 EasySQL

    BUUCTF Web 极客大挑战 2019 EasySQL 文章目录 BUUCTF Web 极客大挑战 2019 EasySQL 1,输入万能密码: 2,输入万能账号 首先有点常识: 正常SQL语句这 ...

最新文章

  1. DCN-cs6200 ipv6 isatap 隧道
  2. C# ,asp.net 获取当前,相对,绝对路径
  3. 语言模型(N-Gram)
  4. 【dfs】简单游戏(jzoj 2121)
  5. 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
  6. python-greenlet模块(协程)
  7. JavaScript:jklyDB
  8. linux 完成量源码,Linux内核中等待队列 和完成量
  9. linux源码中的核心数据结构
  10. 几种常见的图像模糊处理
  11. 三菱数控CNC系统G代码M代码大全
  12. 两部手机怎样才能把数据都传过来_两个手机如何互传照片、文件 ,教你四大绝招...
  13. Python暴力破解ZIP文件密码
  14. 网络存储专有名词介绍
  15. vue3学习-vue create报错tunneling socket could not established
  16. 定价是什么意思_直接定价发行是什么意思?什么是直接定价发行?
  17. 2014区域赛北京站总结
  18. Visual Studio 安装VSN插件
  19. eProsima Fast DDS(1)
  20. 一文读懂无线信道传播的各种特性

热门文章

  1. 无限宝客户端服务器版本号不匹配,无限宝客户端安装问题
  2. 凤凰os进不去图形界面_开机选择凤凰系统就停留在这个界面了怎么办?急在线等!...
  3. 全国与各省的2020年ESA10米土地利用镶嵌数据
  4. archlinux 安装scratch2
  5. 在gitcafe下用hexo建的新博客
  6. 如何借助现有股票量化交易平台编写策略和回测分析
  7. springboot+jsp电子元件仓库管理系统javaweb
  8. 数显之家快讯:深圳华强北再添科技新物种-55寸双面旋转LED导向指示牌
  9. 怎么用Python绘制这样的图?
  10. XWiki搭建(window+tomcat+MySQL+jdk)