BugkuCTF:flag在index里;输入密码查看flag

flag在index里

题目是这样:

                                        

点击之后是这样:

                                            

url变成了:

http://123.206.87.240:8005/post/index.php?file=show.php

看到大佬的解答,因为有file字样,联想到文件包含:

利用xxe漏洞,直接获得源码:

可以用如下一行代码将POST内容转换成base64编码并输出:

readfile("php://filter/read=convert.base64-encode/resource=php://input");

放到这个题: 

http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

拿到base64加密的index.php源码:

解码之后得到flag:

BugkuCTF:flag在index里;输入密码查看flag_第1张图片

意思就是:

把index.php的内容进行了base64编码,而无法执行,通过include()函数提示错误的地方,然后直接显示了出来(index.php还是那个index相当于自己包含自己了)

 

输入密码查看flag

题目内容是这样的:

                                              BugkuCTF:flag在index里;输入密码查看flag_第2张图片

其url是这样的:

                                       

明显的baopo(爆破),打开burpsuite,选择Sniper爆破方式,然后pwd后面的是爆破内容(5位数字):

BugkuCTF:flag在index里;输入密码查看flag_第3张图片

选择Number类型,从00000到99999:

                       BugkuCTF:flag在index里;输入密码查看flag_第4张图片           

选择线程数120个:                

                                   BugkuCTF:flag在index里;输入密码查看flag_第5张图片

开始爆破,安装length排序,最终得到密码,从而得到flag:

     BugkuCTF:flag在index里;输入密码查看flag_第6张图片

 

知识点:

1 php://filter

   4个参数:

名称 描述 备注
resource=<要过滤的数据流> 指定了你要筛选过滤的数据流。 必选
read=<读链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(|)分隔。 可选
write=<写链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(|)分隔。 可选
<;两个链的筛选列表> 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。  

例如:

readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.123.com")
会以大写字母并以rot13加密查看www.123.com的内容

有个大佬的博客:

https://www.leavesongs.com/PENETRATION/php-filter-magic.html

 

你可能感兴趣的:(web安全)