CTFshow-Web入门:PHP特性实战之is_numeric函数绕过技巧解析

[web安全学习] ctfshow-php特性总结 文章目录一. 常见php函数1. intval2. strpos3. is_numeric4. var_dump()5. call_user_func()函数5. parse_str6. strrev7.二. 常见绕过方法尝试添加加号+和空格进行绕过进制绕过采用伪协议绕过如:数组绕过三目运算符+变量覆盖PHP弱类型比较and与&&的区别+反射类ReflectionClass的使用绕过is_numericPHP变量覆盖ereg %00正则截断绕过正则FilesystemIterator类的使用 阅读详情

1. 从一道CTF题说起:is_numeric函数到底在“看”什么?

如果你刚开始接触CTF的Web题目,尤其是PHP代码审计类的,大概率会遇到一个老朋友:is_numeric()函数。很多新手朋友第一次看到这个函数名,可能会想:“这不就是判断是不是数字吗?能有什么花活?” 我刚开始也是这么想的,直到在实战里被它“教育”了几次,才发现这个看似简单的函数,背后藏着不少PHP语言特性的“坑”,而这些“坑”,恰恰是出题人最喜欢设置考点的地方。

简单来说,is_numeric() 函数用于检测一个变量是否为数字或数字字符串。听起来很直白,对吧?比如 is_numeric(123) 返回 true,is_numeric("123") 也返回 true,is_numeric("abc") 返回 false。但它的“宽容度”可能比你想象的要高。它不仅能识别十进制整数、浮点数,还能识别科学计数法(如 "1e3")、带有正负号的数字(如 "+123"、"-3.14"),甚至是一些十六进制表示(在某些PHP版本中,如 "0x1A")。这种“宽容”在方便开发的同时,也给安全留下了隐患,因为攻击者可以利用这些非标准的数字表示形式,绕过一些看似严格的输入校验。

在CTFshow的Web入门系列题目(web100-web103)中,is_numeric() 函数就是核心的“守门员”。题目设计者故意把它放在关键的逻辑判断位置,让你必须想办法让这个函数对你精心构造的“非纯数字”payload返回 true,才能进入后续的代码执行环节。这就像是一道门的密码锁,你以为密码只能是0-9的数字,结果发现它还能识别一些特殊的“暗号”。我们接下来的任务,就是学会识别并构造这些“暗号”,从而打开这扇门,拿到后面的flag。

理解这个函数,不仅仅是记住它的返回值。更重要的是,要理解它在PHP表达式中的行为,尤其是当它和赋值运算符(=)、逻辑运算符(and, &&, or, ||)一起出现时,PHP那套独特的运算符优先级和求值顺序规则。这往往是绕过检测的第一步,也是最容易让人迷惑的一步。别担心,我会用最直白的例子,带你把这些弯弯绕绕理清楚。

2. 运算符优先级:那个容易被忽略的“and”

在PHP里,运算符优先级决定了表达式中各个部分计算的先后顺序。这是一个基础但至关重要的概念,尤其是在代码审计时。我们直接看web100题目的核心代码片段:

$v0 = is_numeric($v1) and is_numeric($v2) and is_numeric($v3);
if($v0){
    // 执行关键代码
}

很多人的第一反应是:$v0 的值应该是后面整个逻辑表达式 is_numeric($v1) and is_numeric($v2) and is_numeric($v3) 的结果。也就是说,$v1、$v2、$v3 必须全是数字,$v0 才会是 true,才能进入if语句。

但这里有一个巨大的陷阱:运算符 and 的优先级低于赋值运算符 =。

这意味着上面那行代码的实际执行顺序是:

  1. 先计算 is_numeric($v1) 的结果(假设为 $tmp)。
  2. 然后执行赋值操作:$v0 = $tmp。
  3. 最后,才将 $v0 的值与后面的 is_numeric($v2) and is_numeric($v3) 进行 and 运算。但这个运算的结果并没有赋值给任何变量,直接被丢弃了。

所以,整行代码执行完后,$v0 的值仅仅等于 is_numeric($v1) 的结果。只要 $v1 是数字,$v0 就是 true,后面的 $v2 和 $v3 是什么,根本不影响 $v0 的值!

为了让你看得更清楚,我们对比一下 and 和更常见的 &&:

$a = true and false; // $a 的值为 true
$b = true && false;  // $b 的值为 false
var_dump($a, $b); // 输出: bool(true) bool(false)

看到区别了吗?&& 的优先级比 = 高,所以 $b = true && false 等价于 $b = (true && false),$b 自然是 false。而 and 优先级低,所以 $a = true and false 等价于 ($a = true) and false,$a 被赋值为 true 后,再和 false 做 and 运算,结果丢弃,$a 保持不变。

这就是web100的第一个突破口。题目用 and 制造了一个逻辑假象,让我们误以为需要三个变量都是数字。实际上,我们只需要让 $v1 通过 is_numeric() 检测就行了。这大大降低了我们构造payload的难度。$v2 和 $v3 我们可以自由发挥,用来构造最终的恶意代码。我当年第一次遇到这种写法时,也愣了半天,反复测试才确信是这个逻辑。所以,在审计代码时,遇到 and/or 和赋值连用,一定要打起十二分精神,亲自在本地环境测试一下它的真实求值顺序,不要想当然。

3. 构造Payload:从反射类到任意代码执行

知道了只需要让 $v1 是数字(比如 v1=1),我们就拿到了进入后续代码的“门票”。接下来看 if 语句里的内容:

if(!preg_match("/\;/", $v2)){
    if(preg_match("/\;/", $v3)){
        eval("$v2('ctfshow')$v3");
    }
}

这里对 $v2 和 $v3 做了限制:

  • $v2 中不能包含分号 ;。
  • $v3 中必须包含分号 ;。

最后,它们会被拼接进一个 eval() 函数中执行:eval("$v2('ctfshow')$v3");。这行代码拼接后的样子,直接决定了我们能执行什么。

3.1 利用ReflectionClass获取类信息

题目提示“flag in class ctfshow”。这意味着flag藏在名为 ctfshow 的类里。PHP中有一个强大的内置类叫 ReflectionClass(反射类),它可以用来获取一个类的所有内部信息,比如方法、属性、常量等。当我们 echo 一个 ReflectionClass 对象时,PHP会自动调用它的 __toString() 方法,输出该类的详细信息。

所以,最直接的payload就是构造一条能创建并输出 ctfshow 类反射对象的语句。我们让:

  • $v2 = "echo new ReflectionClass"
  • $v3 = ";

把它们代入 eval 语句:eval("echo new ReflectionClass('ctfshow');");。这条语句会执行,输出 ctfshow 类的反射信息,flag就藏在这些信息里。

完整的GET请求就是:?v1=1&v2=echo new ReflectionClass&v3=;。

提交后,页面会输出一大串文本,其中包含类似 5322193e0x2d9ab00x2d4faa0x2daafc0x2d21f6bbb10397 的字符串。这里的 0x2d 是 - 号的十六进制HTML实体表示。我们需要将其替换回 -,并用 ctfshow{} 包裹,得到最终flag:ctfshow{5322193e-9ab0-4faa-aafc-21f6bbb10397}。

这个方法非常经典,它不依赖于任何文件操作或系统命令,纯粹利用PHP自身的特性来泄露信息,是“白盒”测试中常用的技巧。我第一次成功用这个方法拿到flag时,感觉特别奇妙,就像是用一把合法的钥匙,打开了程序内部的一扇观察窗。

3.2 更灵活的代码执行与闭合技巧

当然,CTF的魅力在于不止一种解法。既然我们能控制 eval() 中的一部分代码,我们完全可以尝试执行任意PHP代码,比如执行系统命令来找flag。

方法一:使用PHP闭合标签 ?> 观察 eval("$v2('ctfshow')$v3");,如果我们让 $v2 的结尾部分能提前结束PHP代码块,那么后面的 ('ctfshow') 就会被当作普通文本输出,而不会引发语法错误。PHP的闭合标签 ?> 正好用于此。 构造 $v2 = "system('ls');?>",$v3 依然是 ;。代入后: eval("system('ls');?>('ctfshow');"); 当PHP解析器遇到 ?> 时,就退出了PHP模式,后面的 ('ctfshow'); 被当作纯文本直接输出到页面,而 system('ls'); 已被成功执行,会列出当前目录的文件。通过这种方式,我们可以用 tac、cat 等命令读取文件内容。我在实战中常用 ?v1=1&v2=echo tac ctfshow.php?>&v3=; 这样的payload,利用反引号执行命令并输出结果。

方法二:使用注释符 另一种思路是把后面多余的 ('ctfshow') 注释掉。PHP支持 /* */ 多行注释和 // 单行注释。 构造 $v2 = "system('ls');//",$v3 为空或任意字符。但注意题目要求 $v3 必须包含分号,所以我们可以用 $v3 = ";",然后在 $v2 里用 /* 注释开头。 更优雅的payload是:?v1=1&v2=system('ls')/*&v3=*/;。 代入后:eval("system('ls')/*('ctfshow')*/;");。/* */ 中间的内容全部被注释,代码等价于 eval("system('ls');");,非常干净。

方法三:直接利用原结构 其实,最直接的往往最有效。我们仔细看原语句 $v2('ctfshow')$v3。如果我们让 $v2 是一个可以接受参数的函数名,$v3 提供闭合的括号和分号,那么这就是一个标准的函数调用。 例如,$v2 = "var_dump",$v3 = ");"。代入后:eval("var_dump('ctfshow'));");。这本身是合法代码。但我们的目标是输出 $ctfshow 变量(假设flag在里面)。我们可以用 ?v1=1&v2=var_dump($ctfshow)&v3=;。代入后:eval("var_dump($ctfshow)('ctfshow');");。这看起来有点怪,但PHP是如何解析的呢?var_dump($ctfshow) 执行后,返回值是 NULL,然后代码变成了 NULL('ctfshow'),这会产生一个错误。但关键在于,在产生错误之前,var_dump($ctfshow) 已经执行完毕了,flag已经输出到页面上了!这是一种“用错误中断后续执行”的技巧,在很多CTF场景下都有效。我更喜欢用 print_r,它的输出格式更友好。

这些闭合与注释的技巧,是PHP代码审计和漏洞利用的基本功。它们教会我们,看待一段代码不仅要看它“应该”怎么执行,更要思考在参数可控的情况下,它“可能”被拼接成什么样子。多尝试几种拼接方式,往往能发现意想不到的利用路径。

4. 进阶绕过:当数字与字符的边界模糊

到了web102,题目升级了。我们来看关键代码:

$v4 = is_numeric($v2) and is_numeric($v3);
if($v4){
    $s = substr($v2, 2);
    $str = call_user_func($v1, $s);
    file_put_contents($v3, $str);
}

熟悉的 and 陷阱又来了,所以 $v4 只取决于 is_numeric($v2)。因此,$v2 必须是数字(或数字字符串)。然后,代码取 $v2 的第3个字符开始的子串(substr($v2, 2))赋值给 $s。接着,用 call_user_func($v1, $s) 调用 $v1 指定的函数,参数是 $s,结果存入 $str。最后,把 $str 写入 $v3 指定的文件。

我们的目标很明确:向服务器写一个Webshell(比如 <?=cat *;?>),然后访问它获取flag。路径是:$v2 (数字) -> $s (我们的payload) -> $v1函数处理 -> $str (处理后的payload) -> 写入 $v3 文件。

但最大的障碍是:$v2 必须是数字,而 substr($v2, 2) 截取出来的 $s 也将是纯数字字符串。一段包含字母、尖括号的PHP代码,怎么可能是纯数字呢?

这里就需要用到 is_numeric() 的另一个特性:它认为科学计数法形式的字符串是数字。例如,"1e3"、"2.5e-2" 都能通过 is_numeric() 检测。字母 e 在科学计数法中是合法的。

我们的思路是:

  1. 将想要执行的PHP代码(如 <?=cat *;?>)进行Base64编码。Base64编码只包含字母、数字和 +/=,看起来不像纯数字。
  2. 将Base64编码后的字符串,转换成十六进制(Hex)字符串。Hex字符串只包含 0-9 和 a-f。
  3. 关键来了:这个Hex字符串里如果包含 e,它依然可以通过 is_numeric() 的检测,因为 e 可以被解释为科学计数法的指数符号!例如,字符串 "5044383959474e6864434171594473" 在 is_numeric() 看来是合法的,因为它可以被理解为一个非常巨大(但可能无意义)的数字的科学计数法表示的一部分。
  4. 我们让 $v1 为 hex2bin 函数,它的作用正是将十六进制字符串转换回二进制数据(即我们原始的Base64字符串)。
  5. 最后,$v3 我们指定为 php://filter 伪协议,并加上 convert.base64-decode 过滤器。这样,file_put_contents 在写入文件前,会先将 $str(即Base64字符串)进行解码,还原成原始的PHP代码再写入。

具体操作如下:

  1. Payload: <?=cat *;?> (用反引号执行命令)
  2. Base64编码: PD89YGNhdCAqYDs+ (注意,末尾的 = 是填充符)
  3. 转换为十六进制: 5044383959474e68644341715944733d
  4. 去掉末尾的 3d (即 =),因为Base64解码时填充符可有可无,而且 3d 是 =,不是数字,可能通不过检测。得到:5044383959474e6864434171594473
  5. 验证:这个字符串里包含 e (4e 中的 e),但整体能被 is_numeric() 接受。
  6. 因为 substr($v2, 2) 会从第三个字符开始取,所以我们需要在payload前面补两个数字,比如 00。所以最终的 $v2 = "005044383959474e6864434171594473"。
  7. $v1 通过POST传递:v1=hex2bin。
  8. $v3 指定写入的文件和过滤器:v3=php://filter/write=convert.base64-decode/resource=1.php。

整个流程连起来就是:我们传入一个“数字字符串” $v2 -> 截取出Hex字符串 -> hex2bin 函数将其还原为Base64字符串 -> 通过filter伪协议Base64解码 -> 最终将 <?=cat *;?> 写入到 1.php 文件。

访问 1.php,它就会执行 cat * 命令,列出目录下所有文件的内容,flag就在其中。我第一次成功跑通这个链的时候,感觉像完成了一个精巧的魔术。它完美地利用了PHP类型判断的模糊性、字符串转换函数和流过滤器,将一段“非法”的代码,伪装成“合法”的数字,最终成功落地执行。web103只是在web102基础上过滤了“php”字符串,但我们上面的payload(<?=cat *;?>)和最终写入的文件名(1.php)都不包含“php”这个词,所以payload完全复用,直接就能打。

5. 实战中的思考与防御建议

通过这四道题,我们深入剖析了 is_numeric() 函数在CTF中的几种典型绕过姿势。从利用运算符优先级的逻辑漏洞,到构造字符串利用科学计数法特性,再到结合编码转换和伪协议进行文件写入,每一步都体现了对PHP语言特性深入理解的重要性。

作为防守方,或者说在开发中,我们应该如何避免这类问题呢?

  1. 严格类型检查:不要仅仅依赖 is_numeric()。对于期望是整数的输入,使用 intval() 或 filter_var($var, FILTER_VALIDATE_INT) 进行转换和验证。对于严格需要数字字符串的场景,可以用 ctype_digit()(仅限十进制正整数)或 preg_match('/^\d+$/') 进行更严格的匹配。
  2. 理解运算符优先级:在代码审计和编写时,对包含 and、or 和赋值的复杂表达式要保持警惕。尽量使用括号 () 来明确表达式的计算顺序,避免歧义。if(($a = func1()) && func2()) 比 if($a = func1() and func2()) 意图清晰得多。
  3. 慎用 eval() 和动态函数执行:eval()、assert()、call_user_func()、$function() 这类动态代码/函数执行功能是极其危险的,永远不要将用户输入直接拼接进去。如果确实需要动态调用,应使用白名单机制,只允许调用预定义的、安全的函数或类方法。
  4. 对文件操作进行限制:使用 file_put_contents() 等函数时,要严格控制写入路径和内容。避免用户控制完整的文件路径,特别是结合 php://filter 等伪协议时。可以对目标目录进行权限限制,或使用固定的、无执行权限的目录来存放用户上传的文件。
  5. 输入过滤与输出编码:对用户输入进行严格的过滤和验证,遵循“最小权限原则”,只允许必要的字符。对所有输出到HTML、命令行或其他上下文的数据进行适当的编码,防止注入攻击。

回过头看,这些CTF题目虽然为了教学目的放大了漏洞,但其原理在真实的、编写不够严谨的Web应用中同样可能存在。学习绕过技巧,最终目的是为了更好的防御。当你下次在代码里写下 is_numeric() 时,不妨多思考一秒:我到底想验证什么?有没有更严格、更安全的方式?这种安全意识,才是从这些入门题目中能带走的最宝贵的财富。我自己在代码审计工作中,每次看到 is_numeric() 都会条件反射般地检查它的上下文,看看有没有组合成“漏洞三明治”的可能,这已经成了一种职业习惯。希望这篇文章能帮你建立起这种条件反射的起点。

PHP弱类型比较漏洞解析与CTF实战 PHP作为动态类型语言,其弱类型比较机制(==)在特定场景下会产生安全漏洞。当字符串与数字比较时,PHP会尝试自动类型转换,这种特性常被用于CTF竞赛中的Web题型突破。理解'0e123'科学计数法、非空字符串布尔转换等机制,可以绕过常规逻辑判断。在工程实践中,防御此类漏洞需采用严格比较(===)和输入过滤。本案例通过Simple_php题目,演示了如何利用'0abc'绕过双条件判断,以及用'1235a'同时满足非数字与大值检测,对Web安全审计和PHP开发规范具有典型参考价值。 阅读详情

相关推荐

WAF绕过实战:从原理到手法,突破SQL注入防御墙

SQL注入是Web安全领域的核心漏洞之一,攻击者通过构造恶意SQL语句,可操纵后端数据库进行数据窃取或破坏。其原理在于应用程序未对用户输入进行充分过滤,使得输入数据被误认为SQL代码的一部分而执行。为应对此威胁,Web应用防火墙(WAF)应运而生,它通过实时分析请求流量,基于正则匹配、语义分析等多层规则拦截攻击特征,成为应用安全的重要防线。然而,攻防博弈不断升级,掌握WAF绕过技术对于全面评估应用真实防护水平、完成高级渗透测试任务具有关键价值。通过混淆变形、编码差异、逻辑分离等策略,攻击载荷可绕过WAF检测

weixin_30252709的博客 486

CTF笔记:PHP函数is_numeric()绕过

在做CTF过程中遇到的is_numeric()函数,作用是判断输入是不是数字或数字字符串。 思路1:数值->非数值 原题是[极客大挑战 2019]BuyFlag,判断代码如下: if (is_numeric($password)) { echo "password can't be number</br>"; }elseif ($password == 404) { echo "Password Right!</br>"; } 密码是404,但是不能输入数

qq_46145027的博客 7491

从课设到CTF利器:基于PyQt5的JWT图形化工具开发与实战复盘

JSON Web Token(JWT)作为一种轻量级的认证与授权机制,在现代Web应用和微服务架构中扮演着核心角色。其工作原理基于Header、Payload和Signature三部分的组合,通过数字签名确保信息的完整性和来源可信。在网络安全领域,尤其是CTF竞赛和渗透测试中,针对JWT的攻击(如算法混淆、弱密钥爆破、签名伪造)是常见考点。掌握JWT的编解码、篡改与验证技术,对于理解Web安全认证机制至关重要。本文聚焦于一个由Python课程设计演变而来的实战工具——JWT_GUI,它通过PyQt5实现了图

chuiqi9947的博客 649

CTF中php语言之is_numeric()和sleep()函数的绕过

*CTF中php语言之is_numeric()和sleep()函数的绕过* &amp;lt;?php include 'flag.php'; isset($_GET['time'])?$time = $_GET['time']:$time = 0; isset($_GET['num'])?$num = $_GET['num']:$num = 0; $c=is_numeric($time...

qq_41814777的博客 6565

保姆级教程:用Wireshark抓包分析10M汽车以太网PLCA轮询机制(附pcap文件)

本文详细介绍了10M汽车以太网PLCA轮询机制的抓包分析与性能优化方法。通过Wireshark实战教程,解析PLCA协议的时分多址特性、总线型拓扑结构及带宽优化策略,帮助工程师提升车内网络的可靠性和实时性。附赠pcap文件供实践参考。

wdx01234567的博客 240

SAP MTO模式实战:从库存管理到成本核算的深度解析

本文深入解析SAP MTO(Make-to-Order)模式在制造业中的应用,从库存管理到成本核算的全流程实战技巧。通过对比MTS模式,详细阐述MTO的核心逻辑、库存管理配置、成本核算路径及与PP模块的集成要点,帮助企业实现按单生产的高效管理,优化库存水平和资金占用。

weixin_29204205的博客 709

bugku CTF题

web题 矛盾: !is_numeric()函数: 用于检测变量是否为数字或数字字符串 如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE 需要num不为数字字符串或者数字,但num=1; 则,num=1*e0.1或num=1x,x为任意字符 web3 查看源代码得 <!--&#75;&#69;&#89;&#123;&#74;&#50;&#115;&#97;&#52;&#50;&#97;&

qq_46116117的博客 1238

【vue看板】

大屏看板提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:代码量较多,看板中的。

weixin_46223284的博客 2772

[CTF]php is_numeric绕过

PHP is_numeric() 函数 is_numeric() 函数用于检测变量是否为数字或数字字符串。 PHP 版本要求:PHP 4, PHP 5, PHP 7 bool is_numeric ( mixed $var ) 如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回空值,即 FALSE。 is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。 构造: ?what=1' ?what=1, ?what=

skysys的研究小屋 7542

基于深度学习的道路裂缝检测系统完整教程

本文介绍了一种基于深度学习的道路裂缝检测系统完整解决方案。项目采用5466张高质量道路裂缝图像数据集,包含YOLO和Pascal VOC两种标注格式,覆盖多种道路场景。系统利用CNN和YOLO算法实现高效检测,相比传统人工巡检显著提升效率和准确性。文中详细阐述了数据集结构、环境配置和训练流程,包括数据预处理、智能分割策略和质量检查方法。该技术可及时发现道路裂缝隐患,降低维护成本,保障交通安全,为道路养护提供智能化解决方案。

FJN110的博客 298

人工智能在慢病管理中的具体应用全集:从技术落地到场景创新

这一成果的取得,得益于 AI 对居民血压数据的实时监测和分析,以及及时的干预措施。据统计,医疗支出下降了 18%,这主要是由于 AI 慢病管理系统实现了对慢病患者的早筛早诊早治,减少了并发症的发生,降低了医疗资源的浪费,从而减轻了患者和社会的医疗负担。医院信息系统(HIS)、电子病历(EMR)、区域卫生平台、可穿戴设备(如三诺血糖仪、华为手环)、第三方健康APP以及体检中心的数据往往采用不同的数据标准和格式(如HL7、FHIR、JSON、CSV等),且存储在相互隔离的系统中,形成典型的数据孤岛。

AllenLV的博客 2095

[CTF]php is_numeric与弱等于(==)绕过

[CTF]php is_numeric与弱等于(==)绕过 目录 题目详情 语法 绕过方法 关于弱等于 菜鸡最近在打CTF,记录一下题目中的一些方法 题目详情 $num=$_GET['num']; if(!is_numeric($num)) { echo $num; if($num==1) echo 'flag{**********}'; } 题目中要求GET传入的参数num不能是数字或数字字符串,但是num弱等于1时才会...

矜庄寂寥的博客 4206

第一章 电力电子仿真软件 PLECS简介

PLECS是瑞士Plexim公司开发的电力电子仿真软件,具有快速仿真、丰富元件库和热分析功能。软件提供单机版和嵌入MATLAB的版本,支持多平台安装且流程简单。首次运行需获取授权文件,提供60分钟演示模式。界面包含模型创建、帮助文档和元件库浏览器等功能区域,操作便捷。该软件是专业高效的电力电子系统仿真工具。

504

ctfshow-web入门-php特性(web100-web103)is_numeric 函数绕过

我们只需要构造输出 ctfshow 这个类即可。虽然逻辑运算符的优先级比赋值运算符要高,但是如果逻辑运算符和赋值运算符连用时,往往允许存在先进行赋值运算,后再进行逻辑运算的顺序。需要满足 if 语句才会进入后面的判断,因此要求 v0 为 1,这里用的是 and,所以只需要满足 v1是数字即可。要求 v2 中不能有分号,v3 中需要有分号。如果上述要求都满足,则会调用 eval 函数。代入 eval 函数实际就是执行:");

Welcome To My6n Blog 2379

价值微笑曲线与AI公司的位置

1. 背景介绍 1.1 问题由来 自20世纪60年代,哈佛大学商学院教授西奥多·波特提出了“价值链”理论以来,企业如何构建竞争优势成为企业经营管理领域的研究重点。随着全球化的发展和科技进步,企业竞争环境发生了深刻变化,传统价值链管理模式逐渐显现出局限性。近年来,全球竞争格局由成本竞争转向创新竞争,企业的生存

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1096

190、LLC谐振变换器的样机调试实战(问题定位)

这篇实战笔记总结了LLC谐振变换器样机调试中的五大典型问题及解决方案:1)空载炸机源于谐振电容纹波电流能力不足;2)轻载啸叫因控制环路不稳定,需调整突发模式阈值;3)MOSFET过热由死区时间不当导致,需精确优化实现ZVS;4)输出纹波大由PCB布局耦合引起,需优化共模抑制;5)启动过冲需延长软启动时间。作者强调调试需结合示波器、热成像仪等工具,理论计算与实测并重,并详细记录每次参数调整。文章指出LLC调试是不断试错的过程,关键是通过现象分析本质原因。

Jack010169的博客 50

CTFshow系列——PHP特性Web97-100

OK,今天晚上也是给大家带来一篇PHP特性的CTF题目。主要是昨天参加了第三届”陇剑杯“比赛,所以也是没有给大家及时的更新; 过几天就把这次比赛的Web题以及应急响应的两道题目给大家讲解一下。

m0_73812072的博客 1262

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

PHP类型安全:从is_numeric绕过看弱类型比较漏洞与防御实践

在Web开发中,类型安全是保障应用安全的重要基础。PHP作为动态类型语言,其类型系统在提供灵活性的同时,也引入了潜在的安全风险。理解类型转换原理,特别是松散比较(==)与严格比较(===)的差异,是编写安全代码的关键。类型混淆可能导致逻辑漏洞,例如在用户输入验证、条件判断等场景下,攻击者可能利用类型转换规则的不一致性绕过安全检查。is_numeric函数常被用于验证数字输入,但其行为在特定场景下(如处理科学计数法、十六进制字符串或首尾空白字符时)可能与开发者的预期不符,结合后续的类型转换(如intval)或

weixin_29324401的博客 276

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ctfshow web 入门 php特性

89、用不为空数组绕过 90、 91、第一次匹配php可以换行匹配( ),利用这点可用%0a绕过 92、同90 93、用八进制 94、小数绕过 95、 前面加空格绕过(或者前面加一个‘+’) 96、./表示当前路径 下面是从其他师傅那里拿来的解法 97、 ...

wsitcj的博客 382

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ctfshow web入门 php特性 web113-web125

ctfshow web入门 php特性 web113-web125

m0_62207170的博客 673

【CTF-WEB-反序列化】弱类型(==/===/is_numeric())、include伪协议利用(data://、php:/)、请求和返回的base64编码绕过

这篇文章详细解析了CTFSHOW-2026元旦跨年欢乐赛中CS2026题目的解题过程。题目考察了PHP弱类型比较、数组键名类型转换和文件包含漏洞三个关键点。

这里分享技术实践、开发心得,偶尔也吐槽一下代码里的那些趣事。技术之路,痛并快乐着,让我们一同成长。 88

PHP代码审计 -- 以ctfshow php特性 93-104为例

ctfshow php特性 93-104

qq_44640313的博客 501

CTF中PHP特性漏洞全解析:从弱类型比较到反序列化实战

在Web安全领域,PHP作为一种广泛使用的服务器端脚本语言,其独特的语言特性既是开发便利的来源,也可能成为安全漏洞的温床。理解PHP的底层行为原理,对于安全从业者至关重要。PHP的弱类型比较机制、变量处理逻辑以及内置函数的行为特性,在特定场景下可能引发非预期的安全风险,这些风险在CTF竞赛和实际代码审计中尤为常见。从技术价值看,深入掌握PHP特性有助于提升安全防御能力,识别潜在漏洞。应用场景广泛覆盖Web渗透测试、代码审计和CTF解题。本文将聚焦于PHP弱类型比较、字符串处理、变量覆盖及反序列化等核心特性,

weixin_30813225的博客 390

CTFshow超详细解题攻略(1-10)

本文总结了多个Web靶场的渗透测试技术,涉及SQL注入、文件包含、日志注入、PHP松散比较绕过等漏洞利用方法。通过详细步骤演示了如何识别漏洞、绕过过滤机制(如注释符替代空格、十六进制编码绕过引号)、利用布尔盲注获取数据,并最终获取Flag。文章强调这些技术仅用于授权测试和网络安全学习,未经许可不得用于非法渗透,所有实验均在靶场环境中进行。每个案例都提供了完整的攻击链分析,从漏洞发现到最终利用,展示了Web安全攻防的实战技巧。

2503_94637398的博客 661

BUUCTF- is_numeric() 和 ==弱比较-绕过waf

第六周。

m0_64180167的博客 307

BugKuCTF(CTF-练习平台)——WEB-矛盾(详细分析)

BugKuCTF(CTF-练习平台)——WEB-矛盾(详细分析) 今天有个小伙伴,在做BugKu的CTF中WEB-矛盾那道题时不得理解,现把分析思路和解题的writeup写出来,方便以后查询和跟大家交流,如有不正确的地方 ,还望各位大牛在评论区批评指正。 打开网址http://123.206.87.240:8002/get/index1.php,返回的是如下代码: $num=$_GET['num'...

boboyu1224的博客 1427
上一篇: conda环境下的YOLOX极简部署:5分钟搞定训练环境+自定义数据集
下一篇: Crawl4AI 爬虫工具 Docker 部署避坑指南:从零到生产环境实战
github5actions
博客等级 码龄1天 0粉丝 1824原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值