思考

题目是套娃,感觉应该是一环一环的走下去,每个问题应该不是很难,按着他的提示做吧。

知识点

  • substr_count(),用空格或者.或者大写的url编码
  • preg_mach(),%0a绕过
  • 本地访问,XFF或者client-ip

刷题

刷题的时候,习惯先查看robots.txt是否有敏感信息,然后查看源码。如果这个时候,都没有尝试爆目录了。
查看robots.txt无信息,查看源码。

$_SERVER['QUERY_STRING']的作用是将传入的参数和值提取出去,比如这里传入?b_u_p_t=2333,那么$query=“b_u_p_t=2333”
substr_count函数的作用是查看后面个字符,在前面一个字符串中出现的次数。%5f的url_decode后是“——”
用“.”或者空格代替_。这个函数区分大小写还可以用%5F绕过。
preg_match的绕过可以在末尾加上%0a
payload:
?b u p t=23333%0a
?b.u.p.t=23333%0a
?b%5Fu%5Fp%5Ft=23333%0a
执行后,会来到如下界面


看到“Local access only”,我感觉是用X-Forwarded-For:127.0.0.1来绕过,但是绕过不过。看来wp后,用client-ip:127.0.0.1绕过。
第二行的说“你没有权限”,我感觉应该有一个权限的标识或参数,burp抓包后,并没有看见一个可以修改的参数。那就应该是哪里藏着一个参数。
查看源码后,如图 []那堆是jsfuck。

复制到console中执行,弹出 post me Merak。意思请求方法得改为post,同时参数名是Merak

bp修改方法为post,同时添加参数,并执行,结果如图

<?php
error_reporting(0);
include 'takeip.php';
ini_set('open_basedir','.');
include 'flag.php';if(isset($_POST['Merak'])){ highlight_file(__FILE__); die();
} function change($v){ $v = base64_decode($v); $re = ''; for($i=0;$i<strlen($v);$i++){ $re .= chr ( ord ($v[$i]) + $i*2 ); } return $re;
}
echo 'Local access only!'."<br/>";
$ip = getIp();
if($ip!='127.0.0.1')
echo "Sorry,you don't have permission!  Your ip is :".$ip;
if($ip === '127.0.0.1' && file_get_contents($_GET['2333']) === 'todat is a happy day' ){echo "Your REQUEST is:".change($_GET['file']);
echo file_get_contents(change($_GET['file'])); }
?>
源码如下,获得flag的要求
1、ip为127.0.0.1
2、get请求2333的值为today is a happy day
3、get请求的file值经过change函数的变化后,认为flag.php第一个要求:
client-ip:127.0.0.1
第二个要求:
用php的data协议,网上一些用input协议,尝试了没成功
?2333=data://txt/plain,today+is+a+happy+day
第三个要求:
我们写一个脚本,反向运行就行了。python在线运行网站
http://python.jsrun.net/
import base64flag='flag.php'
re=''
j=0
for i in flag:re+=chr(ord(i)-j*2)j+=1
print base64.b64encode(re.encode())

最后payload

在请求头中:client-ip:127.0.0.1
/secrettw.php?2333=data://text/plain,todat+is+a+happy+day&file=ZmpdYSZmXGI%3D

【BUUCTF】[MRCTF2020]套娃相关推荐

  1. BUUCTF [MRCTF2020]套娃

    BUUCTF [MRCTF2020]套娃 打开链接,查看源码,如图所示 关于$_SERVER['QUERY_STRING']取值, 例如: http://localhost/aaa/?p=222 $_ ...

  2. [MRCTF2020]套娃

    [MRCTF2020]套娃 打开网页,没有发现什么特别的,按F12打开开发者工具,查看源代码,发现注释: <!-- //1st $query = $_SERVER['QUERY_STRING'] ...

  3. BUUCTF [GXYCTF2019] 禁止套娃

    题目分析 这题对我这个小白来说好难理解,慢慢补坑吧.PHP很多常用的函数都不是很了解,命令执行也是呜呜呜感觉学得还不是很精通. 打开题目,只有如下: 看源码也没有什么东西,常见的信息泄露:robots ...

  4. 套娃成功!在《我的世界》里运行Win95、玩游戏,软件和教程现已公开

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI <我的世界>(MineCraft)真是一款高自由度的神奇游戏,几乎每隔几天都会有大神用它实现一些奇妙的创意. 最近有一个叫uD ...

  5. github访问不了_用ssh套娃翻到大陆公网给校园内网服务器装R包以及使用GitHub

    碎碎念... 某学校的服务器装R包真把我搞吐了! 最近我用的学校某计算服务器平台除了ssh登录,竟然连curl www.baidu.com都给封了,离谱 好,既然你给我留ssh还让我用,那我就用ssh ...

  6. 7.20套娃(tao)

    套娃(tao) input 7 3 9 5 3 7 10 6 5 10 2 6 10 10 4 1 10 5 3 5 3 9 output 0 1 2 sol: 把查询想象成(x1,y1)向(x2,y ...

  7. Tomcat - Tomcat套娃式架构与配置文件的对应关系解读

    文章目录 套娃式架构 套娃架构之配置文件 server.xml 套娃式架构 看看上面的整体架构图 server-service-----connector/container-----engine-- ...

  8. Tomcat - Tomcat的套娃式架构设计初探

    文章目录 Tomcat的主要功能 Tomcat的架构初探 Connector 组件 -Coyote Coyote的组成 Container 组件 -Catalina Catalina 的组成 serv ...

  9. 禁止套娃!Redis官网宕机,返回“连接不上Redis”

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:Spring Boot + Vue 如此强大?竟然可以开发基于 C/S 架构的应用个人原创+1博客:点击前往,查 ...

最新文章

  1. 【jQuery】如何用jQuery实现鼠标移入后改变背景颜色
  2. 使用wsimport生成本地调用代码
  3. NSRunLoop详解
  4. php和python对比-python与java、php、go的优势对比
  5. Collections.toMap 报错 空指针 key重复
  6. 20应用统计考研复试要点(part41)--概率论与数理统计
  7. MySQL timediff()函数
  8. 高阶函数 实现sum(2)(3) 柯里化
  9. 腐蚀单机怎么进_暖气片堵塞是什么原因?要怎么解决呢?
  10. 二叉树相关知识及求深度的代码实现
  11. 搞懂 Java HashMap 源码
  12. html 为元素附空值,HTML空(void)元素有哪些?
  13. 8255工作方式2——双向选通输入输出(A口)
  14. linux学习笔记:磁盘挂载与卸载命令
  15. php 字符串过滤指定字符,php字符串过滤与替换小结
  16. linux连接无线网络配置详解
  17. 一篇走心的文章和一个不起眼的引流方法
  18. 认识压电式雨量传感器的工作原理及MODBUS-RTU RS485通信协议
  19. 3阶差分方程在有重根下的一般计算公式的推导
  20. 《缠中说禅108课》2:没有庄家,有的只是赢家和输家

热门文章

  1. Blender 建模案例一(1)
  2. MATLAB——根轨迹原理及其Matlab绘制
  3. 安全邮箱是什么,163邮箱安全中心,安全邮箱怎么注册?
  4. SOA、SOI和SOE
  5. linux怎样保存文件,linux不能保存文件如何解决
  6. smil java,如何在Android开发中使用SMIL文件
  7. 华南理工计算机电路基础试题,2017年华南理工大学计算机电路基础
  8. 最惨大学生,大学四年,啥也不会
  9. 贴片电解电容100UF16V 6.3*4.5mm超薄封装规格
  10. awk命令详解(二)