前言
- 各位师傅大家好,我是qmx_07,今天给大家讲解Appointment靶场,这一章节 我们涉及到一些web安全的相关知识
渗透过程
信息搜集
- 我们通过端口扫描,得知对方开启了http80端口
- 思路:尝试扫描下敏感目录
目录扫描(gobuster)
- 首先 我们先要访问一下网页
- 是一个登录口,点击forget password 尝试 找回密码,服务器没有响应,尝试 扫描敏感目录
- 似乎没找到可用信息
目录爆破(dirsearch)
- 相较于使用gobuster,我个人更喜欢使用dirsearch进行目录扫描
- 介绍:dirsearch是一个用于快速扫描Web服务器目录的工具。它使用字典文件来尝试不同的目录和文件路径,以便找到潜在的敏感文件或目录。dirsearch支持多线程扫描,可以快速检测常见的目录和文件,并对结果进行过滤和排序
- 安装命令:
apt-get install dirsearch
- 使用说明:
-t 多线程
-e 限定后端文件
--exclude-extensions 排除限定文件
-l 批量ip扫描
-w 使用自定义文件
-r --deep-recursive 递归扫描
-H 自定义HTTP头部信息
-- delay 每个请求的延迟时间
-- timeout 超时时间
-i 允许的状态码
-x 排除的状态码
-p 代理扫描
-o 输出文件
--user-agent "Custom User Agent" 自定义UA头
-exclude-text "Not Found" 排除响应文本
使用SQL万能钥匙登录
- 思路:通过burp进行爆破,修改返回包进行未授权登录,也可以通过sql闭合 万能钥匙进入
- flag:e3d0796d002a446c0e622226f42e9672
知识点讲解
SQL万能钥匙
- 介绍:
假设我们有一个简单的登录系统,用户输入用户名和密码进行验证:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 用户输入
username = input("请输入用户名: ")
password = input("请输入密码: ")
# 不安全的 SQL 查询
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
cursor.execute(query)
# 检查结果
if cursor.fetchone():
print("登录成功")
else:
print("用户名或密码错误")
# 关闭连接
conn.close()
- 假如我们在用户名输入: admin’#
SELECT * FROM users WHERE username='admin'#' AND password='anything'
- 那么由于#在mysql中是注释符,所以后面省略
SELECT * FROM users WHERE username='admin'
- 无论密码填写什么,都不进行验证,全部判断逻辑为真
答案
- 1.SQL全称是什么?
Structured Query Language
- 2.最常见的SQL漏洞是什么?
SQL injection
- 3.SQL注入在2021年OWASP TOP10分类是什么?
A03:2021-Injection
- 4.在服务器上80端口的系统版本是什么?
Apache httpd 2.4.38 ((Debian))
- 5.HTTPS协议端口是多少?
443
- 6.在web中目录是是什么?
directory
- 7.状态码未找到是哪个?
404
- 8.使用gobuster 爆破目录的选项是?
dir
- 9.在mysql中什么可以注释一行数据?
#
- 10.登录之后 返回的第一个单词是什么?
Congratulations
- 11.flag是什么?
e3d0796d002a446c0e622226f42e9672
总结
- 介绍了sql注入万能钥匙的原理,dirsearch的使用