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

[CISCN2019 华东南赛区]Web11

知识点:Smarty模板引擎注入

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

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

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

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

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

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

[MRCTF2020]套娃

1.首先查看源码

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

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

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

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

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

4.进去看看

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

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

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

解码得到

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

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

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

需要改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);
?>

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

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

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

得到flag

 

上一篇:数组排序(冒泡排序,sort方法)


下一篇:Leetcode 1385. 两个数组间的距离值(DAY 174)---- 二分算法学习期