首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP代码审计

key, 加密一些特殊字符然后拿到加密的字符串 1.加密可逆 弱算法导致了知道明文,知道密文,可逆,拿到加密函数的 key,从而自己生成一个想要的加密字符串 参考漏洞:DedeCMS-V5.7-SP1(...要加密的内容是可控的,密文会输出,这个可控的点能引入特殊字符,那么把一些特殊字符带入到这里面,拿到密文,再找到一处 decode 后会进行特殊操作的点,然后进行各种操作。...越权 1.通过 ID 操作 2.通过 cookie 操作 注入 把用户可控的一些变量,带入到了数据库的各种操作中,并且没有做好过滤,例如:在注册用户的时候检测用户名是否存在,SQL 语句是拼接 SQL...,不需要用单引号区分数据与 SQL 命令,这样就会让一般的GPC等机制无用,因为不包括特殊字符强制类型转换 intval 6.字符型、搜索型 有单引号括住,需要闭合单引号 全局没有做 addslashes...注入 2 wooyun-2014-056822.html 10.变量覆盖 变量覆盖有 extract、parse_str、$$ $$ 参考漏洞:MetInfo 最新版 (5.2.4) 一处 SQL 盲注漏洞

4.7K00

PHP代码审计

include_file=zip://C:\wamp\www.php\1.jpg%231.php`00 截断长文件名截断转换字符集造成的截断伪协议包含日志,环境变量 2.见3.远程文件包含 allow_url_include...,拿到 key参考漏洞:qibocmsV7 整站系统任意文件下载导致无限制注入多处4.文件写入5.文件包含 加密函数拿到加密函数的 key, 加密一些特殊字符然后拿到加密的字符串1.加密可逆弱算法导致了知道明文...2.加密可控要加密的内容是可控的,密文会输出,这个可控的点能引入特殊字符,那么把一些特殊字符带入到这里面,拿到密文,再找到一处 decode 后会进行特殊操作的点,然后进行各种操作。...,不需要用单引号区分数据与 SQL 命令,这样就会让一般的GPC等机制无用,因为不包括特殊字符强制类型转换intval6.字符型、搜索型 有单引号括住,需要闭合单引号全局没有做 addslashes,在查询的时候再对一些用户可控的变量进行...注入 2 10.变量覆盖变量覆盖有 extract、parse_str、$$ $$参考漏洞:MetInfo 最新版 (5.2.4) 一处 SQL 盲注漏洞extract直接从 POST 数组中取出变量

3.9K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    代码审计入门总结

    e.会话认证漏洞 COOKIE验证:没有使用SESSION验证,将信息直接保存在COOKIE中 找到传入sql语句的参数的传递过程 回溯变量到最原始的函数 看它保存在cookie的算法 是否可逆 和MD5...比起 sha1更安全 解密sha1的网站更少 限制一个用户只能同时在一个IP上登录 审计代码时,查看登录处代码 f.二次漏洞 1.类型: 不是逻辑问题,是可信问题。...2.技巧: (1) 钻GPC等转义的空子: 不受GPC保护的$_SERVER变量:PHP5以后,$_SERVER取到的header不再受GPC影响,就算开启特殊字符也不会被转义,存在注入 编码问题转换:...> (2)字符串问题: 利用报错,找到敏感信息 字符串截断: %00空字符截断:【PHP版本小于5.3】 iconv函数字符编码转换截断:【对PHP版本有要求】 chr(128)—chr(255)可以截断字符 <?php $a = '1'.chr(130).'2’; echo $a."

    1.5K70

    吃透一文总结,轻松入门代码审计!

    > 会话认证漏洞 COOKIE验证:没有使用SESSION验证,将信息直接保存在COOKIE中 找到传入sql语句的参数的传递过程 回溯变量到最原始的函数 看它保存在cookie的算法 是否可逆1....限制一个用户只能同时在一个IP上登录 审计代码时,查看登录处代码 二次漏洞 类型 不是逻辑问题,是可信问题 业务逻辑复杂度,与二次漏洞触发率成正比 购物车/订单/引用数据/文章编辑/草稿==>SQL注入...:PHP5以后,_SERVER取到的header不再受GPC影响,就算开启特殊字符也不会被转义,存在注入 编码问题转换 GBK的宽字节注入:%df ' 单引号自动被转义成(%5c),同时%df与%5c连在一起组合成運字单引号依然在...> iconv函数字符编码转换截断:【对PHP版本有要求】 #!php chr(128)—chr(255)可以截断字符 特殊字符未转义 报错注入 <?

    52110

    特殊变量 (SQL)

    特殊变量 (SQL)系统提供的变量。...这些变量包含系统提供的值。只要可以在SQL中指定文字值,就可以使用它们。SQL特殊变量名不区分大小写。大多数可以使用缩写来指定。...唯一的例外是 $LISTGET 函数和 $LIST 的单参数和双参数形式,它们将编码字符串作为输入,但将单个元素值作为标准字符串输出。SQL 支持字符串函数、字符串条件表达式和字符串运算符。...当为数字参数指定字符串时,大多数 SQL 函数执行以下字符串到数字的转换: 非数字字符串转换为数字 0;将数字字符串转换为规范数字;并且混合数字字符串在第一个非数字字符处被截断,然后转换为规范数字。...Truncation and Trim以下函数可用于截断或修剪字符串。截断限制字符串的长度,删除超出指定长度的所有字符。Trim从字符串中删除前导和/或尾随空格。

    1.2K20

    SQL函数 TRUNCATE

    SQL函数 TRUNCATE标量数值函数,按指定位数截断一个数。大纲{fn TRUNCATE(numeric-expr,scale)}参数 numeric-expr - 要截断的数字。...换句话说,在小数点右侧的零位数处执行截断;所有小数位和小数点本身都被截断。如果小数位数为负数,则在小数点左侧的位数处执行截断。如果小数位数等于或大于数字中的整数位数,则返回零。...TRUNCATE只能用作ODBC标量函数(使用花括号语法)。ROUND可用于对数字执行类似的截断操作。Trim可用于对字符串执行类似的截断操作。...$JUSTIFY 还右对齐数字,以便 DecimalSeparator 字符在一列数字中对齐。 $JUSTIFY 不会截断。示例以下两个示例都将数字截断为两位小数。...第一个(使用动态 SQL)将比例指定为整数;第二个(使用嵌入式 SQL)将 scale 指定为解析为整数的主变量:/// d ##class(PHA.TEST.SQLFunction).Truncate

    1.2K10

    从多个基础CMS中学习代码审计

    ad_id参数先进行了trim()过滤,也就是过滤了参数中的空白字符,例如空格 \t \r \n这些,之后呢进行了SQL注入查询语句,参数两边是没有加单引号的,看起来是可以进行SQL注入的,此时发现getone...comment.php(失败)打开发现这个SELECT语句中id变量是无单引号包裹的 id如果没有被过滤的话,就存在可注入点,看id传值处 id添加了intval函数,因此这个参数是无法进行注入了,...下一处 这里的id变量未被单引号包裹,但它在传值时添加了intval函数,这意味着字符串无法上传,因此这个也是无法成功注入的。...,这个也就无法实现任意文件删除,因此这个实现不了任意文件删除face_pic3参数这个有多个参数中涉及了unlink函数,我们挨个进行查看 这里的话可以发现这个face_pic3是在unlink函数下的...install/index.php 在此处发现有update语句和可控的变量password和username,查看这两个变量的传入方式 可以发现是直接传入的,没有什么过滤,那么这里就可以在user变量处尝试

    42710

    从多个基础CMS入坑代码审计

    ad_id,观察代码可以看出它对ad_id参数先进行了trim()过滤,也就是过滤了参数中的空白字符,例如空格 \t \r \n这些,之后呢进行了SQL注入查询语句,参数两边是没有加单引号的,看起来是可以进行...comment.php(失败) 打开发现这个SELECT语句中id变量是无单引号包裹的 id如果没有被过滤的话,就存在可注入点,看id传值处 id添加了intval函数,因此这个参数是无法进行注入了...在最上方看看包含的文件 发现包含有这个common.inc.php文件,而这个文件中有过滤单引号的函数,因此这里不存在SQL注入。...下一处 这里的id变量未被单引号包裹,但它在传值时添加了intval函数,这意味着字符串无法上传,因此这个也是无法成功注入的。...')包裹的,且来自于变量fileid,fileid变量是由cid参数经过addlashes函数后得到的,那这里的话单引号肯定就会被转义了,想闭合语句的话不太可能,所以这里的话SQL注入是没戏,这里算是G

    71690

    小白的代码审计初始之路

    ad_id,观察代码可以看出它对ad_id参数先进行了trim()过滤,也就是过滤了参数中的空白字符,例如空格 \t \r \n这些,之后呢进行了SQL注入查询语句,参数两边是没有加单引号的,看起来是可以进行...comment.php(失败) 打开发现这个SELECT语句中id变量是无单引号包裹的 id如果没有被过滤的话,就存在可注入点,看id传值处 id添加了intval函数,因此这个参数是无法进行注入了...在最上方看看包含的文件 发现包含有这个common.inc.php文件,而这个文件中有过滤单引号的函数,因此这里不存在SQL注入。...下一处 这里的id变量未被单引号包裹,但它在传值时添加了intval函数,这意味着字符串无法上传,因此这个也是无法成功注入的。...')包裹的,且来自于变量fileid,fileid变量是由cid参数经过addlashes函数后得到的,那这里的话单引号肯定就会被转义了,想闭合语句的话不太可能,所以这里的话SQL注入是没戏,这里算是G

    67170

    Caché 变量大全 $HOROLOG 变量

    当Caché遇到非数字字符(逗号)时,它将截断字符串的其余部分并返回数字部分。这是字符串的日期整数部分。...根据$ZTIMEZONE特殊变量的当前值确定本地时区,然后针对本地时区(例如,夏令时)进行调整。它仅返回整秒;小数秒被截断。 $NOW返回当前进程的本地日期和时间。...$NOW()根据$ZTIMEZONE特殊变量的值确定本地时区。本地时间未针对本地时间变量进行调整,例如夏令时。因此,它可能与本地时钟时间不对应。...可以使用TO_CHAR SQL函数或%SYSTEM.SQL类的Tochar()方法将Caché $HOROLOG日期转换为Caché Julian日期。...$HOROLOG前的+强制Caché将其视为一个数字,从而在逗号处截断,从而消除时间整数: /// d ##class(PHA.TEST.SpecialVariables).HOROLOG4() ClassMethod

    1.4K20

    SQL聚合函数 JSON_ARRAYAGG

    SQL聚合函数 JSON_ARRAYAGG 创建JSON格式值数组的聚合函数。 注:IRIS可用,IRIS之前版本不可用。...这个长度包括JSON数组格式化字符以及字段数据字符。 如果预期返回的值将需要大于8192,可以使用CAST函数指定一个更大的返回值。...如果实际返回的JSON数组长于JSON_ARRAYAGG返回类型长度,IRIS将在返回类型长度处截断JSON数组,而不会发出错误。 因为截断JSON数组会删除其关闭的]字符,这使得返回值无效。...在某些情况下,JSON_ARRAYAGG结果可能是按顺序出现的,但是不应该依赖于这种顺序。 在给定聚合结果值中列出的值不能显式排序。 相关的聚合函数 LIST返回一个逗号分隔的值列表。...XMLAGG返回一个串接的值字符串。 示例 下面的嵌入式SQL示例返回一个主机变量,该变量包含示例的Home_State列中所有值的JSON数组。

    2K30

    Joomla远程代码执行漏洞分析(总结)

    但还有一个问题,在我们构造好的反序列化字符串后面,还有它原本的内容,必须要截断。而此处并不像SQL注入,还有注释符可用。...(%F0%9D%8C%86)字符将utf-8的字段截断了。 这里我们用同样的方法,在session进入数据库的时候就截断后面的内容,避免对我们反序列化过程造成影响。...比如,我们可以用长字符(64k)串截断,来达成类似和?字符截断一样的效果。...exp构造的执行链,分别利用了如下类: JDatabaseDriverMysqli SimplePie 我们可以在JDatabaseDriverMysqli类的析构函数里找到一处敏感操作: 在序列化的时候,protected类型变量会被转换成\0*\0name的样式,这个替换在源代码中也可以看到: <?

    1.2K20

    审计思路学习笔记

    Fuzzer软件可以用于检测多种安全漏洞,包括缓冲区溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、竞争条件和死锁漏洞、SQL注入、跨站脚本、RPC漏洞攻击、文件系统攻击、信息泄露等 一些工具: Browser...2、变量覆盖 很多的漏洞查找者都知道extract()这个函数在指定参数为EXTR_OVERWRITE或者没有指定函数可以导致变量覆盖,但是还有很多其他情况导致变量覆盖的如: (1)遍历初始化变量 请看如下代码...,主要是在一些code hacking发挥着特殊重作用的一类字符。...> 经过测试字符“.”、“ /”或者2个字符的组合,在一定的长度时将被截断,win系统和nix的系统长度不一样,当win下strlen(realpath("./"))+strlen($_GET['action...文件操作里有很多特殊的字符,发挥特别的作用,很多web应用程序没有注意处理这些字符而导致安全问题。

    1.3K20

    SQL函数 ROUND

    SQL函数 ROUND以指定位数舍入或截断数字的数值函数。...在 ROUND 循环或截断操作后删除尾随零。不返回前导零。如果 scale 为正数,则在小数点右侧的该位数处进行舍入。如果 scale 等于或大于小数位数,则不会发生舍入或零填充。...换句话说,在小数点右边的零位处进行舍入;所有小数位和小数点本身都被删除。如果 scale 为负数,则在小数点左侧的该位数处进行舍入。如果 scale 等于或大于舍入结果中的整数位数,则返回零。...ROUND 舍入(或截断)到指定数量的小数位数,但其返回值始终是标准化的,删除尾随零。例如,ROUND(10.004,2) 返回 10,而不是 10.00。TRUNCATE 截断到指定数量的小数位数。...$JUSTIFY 还右对齐数字,以便 DecimalSeparator 字符在一列数字中对齐。 $JUSTIFY 不会截断。$DOUBLE 数字$DOUBLE IEEE 浮点数使用二进制表示法编码。

    5.5K31

    springboot代码审计学习-newbeemall审计

    而{} 仅仅是纯粹的 string 替换,在动态 SQL 解析阶段将会进行变量替换,类似于直接替换字符串,会导致SQL注入产生。...MyBatis官方文档中有如下叙述: #{}告诉 MyBatis 创建一个预编译语句(PreparedStatement)参数,在 JDBC 中,这样的一个参数在 SQL 中会由一个“?”...想要得到未经过模板转义后的字符串通过 th:utext 来实现,全局搜索下 找到了这两处 第一处在 detail.html 中。是显示商品的介绍。...ps:目前较新版的spring和tomcat已经修改了对 / ; 等特殊字符的匹配规则,该漏洞在新版中可能无法利用。 简单调试下看看他是怎么个回事。...上面也提到过spring根据ServletPath来分配路径,tomcat 服务器在解析 ServletPath 时会对 / ; 等特殊字符进行处理。

    5.3K41

    分享:安全服务工程师面试知识点大纲

    布尔盲注可以使用的函数很多,例如可以使用length函数来判断需要查询的内容的字符长度,使用substring函数来读取字符串的每一个字符,使用ascii函数来转换为相应的ascii值,最后通过布尔运算来判断字符的...接下来正式开始吧~ Part.2 SQL注入 SQL注入 (1)定义 攻击者利用web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令。...输入过滤,检查变量的数据类型是否正确。 过滤敏感字符,比如单引号、双引号。使用mysql_real_escape_string()等安全函数。...(3)防护 开启HttpOnly 输入输出过滤:黑名单、白名单、电话邮件等符合格式要求、输入长度限制、使用安全编码函数对特殊字符进行转义,如htmlspecialchars() (4)同源策略 为了避免出现网站...一旦用户能够控制这些函数中的参数时,且输入没有被过滤,就能够将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

    3K41

    存储和使用流数据(BLOBs和CLOBs)

    在以下示例中,示例的第一部分创建由两个字符串和其终端组组成的字符流,然后使用嵌入的SQL将其插入流字段。...如果表是使用SQL CREATE TABLE命令创建的,这些包和持久化类名称将被散列为每个4个字符(例如,^EW3K.Cn9X.S)。 这个全局变量包含流数据插入计数器最近分配的值。...此全局变量包含最近分配的流数据插入计数器的值。如果没有插入流字段数据,或者使用截断表删除了所有表数据,则此全局变量未定义。...二进制流字段返回字符串。 在表数据的管理门户SQL界面打开表显示中显示相同的值。...尝试使用流字段作为任何其他SQL函数的参数会导致SQLCODE -37错误。 尝试使用流字段作为任何其他SQL函数的参数会导致SQLCODE -37错误。

    1.4K20

    SQL函数 $EXTRACT

    SQL函数 $EXTRACT 按位置从字符串中提取字符的字符串函数。 大纲 $EXTRACT(string[,from[,to]]) 参数 string - 要从中提取子字符串的目标字符串。...参数 string 字符串值可以是变量名、数字值、字符串字面值或任何有效表达式。 from from值必须是正整数(但是,请参见注释)。 如果是小数,则截断该小数部分,只使用整数部分。...如果from大于to, $EXTRACT返回一个空字符串。 to to参数必须与from参数一起使用。 它必须是一个正整数。 如果是小数,则截断该小数部分,只使用整数部分。...SELECT $EXTRACT('THIS IS A TEST',1,7) AS Extracted THIS IS 下面的嵌入式SQL示例从a中提取第二个字符(“B”),并将这个值赋给变量y。...唯一的例外是$LISTGET函数和$LIST的单参数和双参数形式,它们接受已编码的字符串作为输入,但将单个元素值作为标准字符串输出。

    62040
    领券