URL中?和#的区别(关于SSRF)以及mysql的secure-file-priv
零,绪论
20180125日,忙! 瞎比比总结一下,来满足这是个日记的样子。
1、今天谈的并不是什么技术【当然也不是没有技术(都很基础)】而是瞎几把扯。
一、关于一种SSRF的检测绕过:
1、背景:
有这样一种情况在集中登录认证的web页面一般url后面会跟一个next=https://aaa.bbcc.com/index/xxx/index.html这个位置很容易发生SSRF。但仔细观察测试,发现这个地方对URL做了检测,只允许URL以图片类文件扩展名作为结尾。例如.jpg,.png等等,为了绕过这个检测,想到了使用#和?,但是在这里就发现了区别了。
2、?与#的区别:
(1)?号是URL的一部分,一般用在GET请求之中,作为区分主干和参数的符号。例如一个请求是:https://www.asdf.com/getinfo.php?name=test。在请求报文中应该是下面这样的:
GET /getinfo.php?name=test HTTP/1.1
Host: www.asdf.com
...
当?后面的部分在后台的处理函数中不做处理的时候也对整个访问没有影响。
(2)#号其实不是URL的一部分,或者准确的说是不传到后台的一部分,所以#以及其后面的部分不会出现在请求报文中。一个https://www.asdf.com/getinfo.php#print的请求报文应该如下:
GET /getinfo.php HTTP/1.1
Host: www.asdf.com
...
所以#号具有以下特点:
@1 #号不触发网页的重载;
@2 #号不影响请求报文的路径;
但是#号也对浏览有影响:
@1 #会改变历史记录,对于ajax类请求很有帮助,可以记录请求时候的一些状态值。
@2 window.location.hash会读取#号后面的值,还有就是#后面值得改变将会触发HTML5中的onhashchange事件。
综上所述,我想绕过SSRF的检查,就需要让URL以.jpg等图片格式的扩展名后缀结尾(在请求路径中),而且不能让其起效。所以就可以使用?来把最后面的部分加载在参数里,从而满足后台的检查,又能触发SSRF。
二、关于MySQL的secure-file-priv检查
1、背景:
在拿到mysql的最高权限的时候,想利用sql语句写个一句话进去,然而我发现我遇到了一个错误,SQL语句执行不符合secure-file-priv的设定。
2、什么是secure-file-priv
secure-file-priv是MySQL的一个新特性,这个配置点后面决定了MySQL数据导入导出的合法路径。否则既无法写文件、也无法读文件,例如into outfile时候回出错,load_file时候会返回null等。而这个配置的值在my.ini或者mysqld.cnf文件中默认是NULL哦,这样就导致了彻底无法输入写出和读入。如何查询对方的合法路径呢,可是使用:
show variables like '%secure%';
mysql> show variables like '%secure%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | NULL |
+--------------------------+-------+
rows in set (0.00 sec)
类似于这种就没得玩了,而且这个只能通过配置文件修改,无法直接通过mysql-cli去修改,因此只能想别的办法了。
URL中?和#的区别(关于SSRF)以及mysql的secure-file-priv的更多相关文章
- 【本周面试题】第1周 - 获取URL中的查询字符串参数、get和post的区别
[此系列优先解决自己经历的面试题] 2018.11.16 面试题一:你如何获取浏览器URL中查询字符串中的参数? 题目代码: 测试地址为 https://www.sogou.com/tx?query= ...
- django中url 和 path 的区别
django中 url 和 path 都是配置路径,有什么不同? django.urls path django.conf.urls url path 与 url 是两个不同的模块,效果都是响应返回 ...
- 记录一次bug解决过程:velocity中获取url中的参数
一.总结 在Webx的Velocity中获取url中参数:$rundata.getRequest().getParameter('userId') 在Webx项目中,防止CSRF攻击(Cross-si ...
- 你知道url中的特殊符号含义么
1.# #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如,http://www.example.com/index.html#print就代表网页index.html的print位置.浏 ...
- js的url中传递中文参数乱码,如何获取url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...
- JS中的的Url传递中文参数乱码,如何获取Url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码:<script type=”text/javascript” ...
- 【转】URL和URI的区别
[转]URL和URI的区别 译者:华科小涛:http://www.cnblogs.com/hust-ghtao/: 初学http协议,就被这两个相似的术语搞蒙了,查了很多资料,总算搞清楚了.(找资料还 ...
- Js的Url中传递中文参数乱码的解决
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: 2. 接收参数页面:test02.html 二:如何获取Url& ...
- 一招明白URL和URI的区别
URL和URI的区别(示例): URL[统一资源定位器]: http://localhost:8080/api/account/queryAccountInfo URI[统一资源定位符]: /api/ ...
随机推荐
- hdu 4779 Tower Defense (思维+组合数学)
Tower Defense Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) ...
- Centos 7 防火墙
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体.启动一个服务:systemctl start firewalld.service ...
- 使用HTML5的Notification API制作web通知的教程(转)
var notification=new Notification(‘Notification Title',{ body:'Your Message' }); 上面的代码构造了一个简陋的通知栏.构造 ...
- systemctl 配置mysql 开机启动
在centos 7 环境下对服务的管理已经不再用service 命令了,而是改为systemctl 命令来管理服务. 一.创建systemctl 的对mysql服务的配置文件: touch /usr/ ...
- MySQL多线程同步-Transfer使用测试
由淘宝核心系统研发—数据库组开发的MySQL-Transfer,用于解决MySQL主从同步延迟的问题,从MySQL单线程到多线程的工作模式.可以观看@丁奇的相关资料: MySQL多线程同步-Trans ...
- 【Android】15.0 第15章 广播和通知—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-02-28 一.简介 广播(Broadcast):其功能类似于收音机的广播,你只要调到那个台(只要在接收的类中注册了要接收的广播),就能 ...
- shell获取用户输入
主题: 再学shell之获取用户输入echo -n(不换行)和read命令-p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 和“读文件”深入学习 1.基本读取read命令接收标准输 ...
- WebSocket请求过程分析及实现Web聊天室
WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex ...
- Ubuntu/Debian交叉编译安装ARM平台版本的ffmpeg
1 准备工作 (1)libmp3lame库 下载: wget http://downloads.sourceforge.net/lame/lame-3.99.tar.gz 解压 编译:./con ...
- lua工具库penlight--05日期和时间
创建和显示时间 Date类提过了简洁的使用date和time的方法.它依赖于os.date和os.time. Date对象可以通过table创建,如果os.date,同时提过了获取和设置date 成员 ...