2025年渗透测试面试题总结-17(题目+回答)

发布于:2025-08-16 ⋅ 阅读:(23) ⋅ 点赞:(0)

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

目录

一百二十一、CSRF、SSRF 和重放攻击有什么区别?

一百二十二、说出至少三种业务逻辑漏洞,以及修复方式?

一百二十三、nmap,扫描的几种方式

一百二十四、sql 注入的几种类型?

一百二十五、报错注入的函数有哪些?10 个

一百二十六、延时注入如何来判断?

一百二十七、如何拿一个网站的 webshell?

一百二十八、sql 注入写文件都有哪些函数?

一百二十九、如何防止 CSRF?

一百二十一、CSRF、SSRF 和重放攻击有什么区别?

一百二十二、说出至少三种业务逻辑漏洞,以及修复方式?

一百二十三、nmap,扫描的几种方式

一百二十四、sql 注入的几种类型?

一百二十五、报错注入的函数有哪些?10 个

一百二十六、延时注入如何来判断?

一百二十七、如何拿一个网站的 webshell?

一百二十八、sql 注入写文件都有哪些函数?

一百二十九、如何防止 CSRF?

一百二十一、CSRF、SSRF 和重放攻击有什么区别?

这三种攻击都属于Web安全漏洞,但针对不同层面:

  • CSRF(Cross-Site Request Forgery,跨站请求伪造):攻击者利用用户已登录的身份,诱导用户执行非授权的操作(如转账或修改设置)。它依赖于用户的会话凭证。
  • SSRF(Server-Side Request Forgery,服务器端请求伪造):攻击者操纵服务器向内部或外部系统发送恶意请求(如访问内网资源)。它利用服务器的信任机制。
  • 重放攻击(Replay Attack):攻击者截取合法请求并进行重复提交(如重放登录凭证),以绕过身份验证。它不修改请求内容,只复制。

下表总结了主要区别(基于攻击目标、机制和防御方式):

攻击类型 攻击目标 核心机制 常见防御方式
CSRF 用户会话 诱骗用户执行恶意请求(如钓鱼邮件) 使用CSRF tokens、SameSite Cookie属性
SSRF 服务器资源 服务器被利用发送请求 输入验证过滤、限制服务器出站请求
重放攻击 网络通信安全 重复发送截获的合法数据包 时间戳机制、一次性令牌(nonce)

补充说明:

  • CSRF 针对客户端用户,SSRF 针对服务器端,重放攻击针对数据传输过程。
  • 实际中,三者可能结合使用(如SSRF导致CSRF),防御需多层防护。

一百二十二、说出至少三种业务逻辑漏洞,以及修复方式?

业务逻辑漏洞源于应用设计缺陷,而非技术漏洞。以下是三种常见类型及修复方式(基于OWASP建议):

  1. 价格篡改漏洞
    • 描述:攻击者修改商品价格参数(如通过Burp Suite修改POST请求),以低价购买高价商品。
    • 修复方式:服务器端验证所有价格计算;使用签名机制(如HMAC)确保数据完整性;避免将敏感数据存储在客户端。
  2. 权限绕过漏洞
    • 描述:用户通过修改URL参数(如ID=123)访问未授权资源(如其他用户的数据)。
    • 修复方式:实施严格的访问控制列表(ACL);每次操作前检查用户角色和权限;使用服务端会话管理。
  3. 密码重置逻辑缺陷
    • 描述:攻击者利用弱验证机制(如仅验证邮箱格式)重置他人密码,或暴力破解验证码。
    • 修复方式:引入多因素认证(MFA);限制密码重置尝试次数;使用时间敏感令牌(有效期短)。

补充说明:

  • 业务逻辑漏洞常被忽略,但危害高(如导致金融损失),建议定期进行威胁建模和渗透测试。

一百二十三、nmap,扫描的几种方式

nmap(Network Mapper)是网络扫描工具,支持多种扫描技术。以下是常见的7种扫描方式(控制在10个以内):

  1. TCP SYN扫描(-sS)
    • 半开放扫描,发送SYN包但不完成握手;速度快且隐蔽。
  2. TCP Connect扫描(-sT)
    • 完成完整TCP握手;适用于无权限用户,但易被日志记录。
  3. UDP扫描(-sU)
    • 扫描UDP端口(如DNS或SNMP服务);速度慢但必要检测无响应服务。
  4. ACK扫描(-sA)
    • 发送ACK包探测防火墙规则;用于绕过简单过滤。
  5. NULL扫描(-sN)
    • 发送无标志位TCP包;针对特定系统(如Windows)探测开放端口。
  6. Xmas扫描(-sX)
    • 发送FIN、URG、PSH标志位;类似NULL扫描,用于混淆IDS。
  7. 操作系统探测(-O)
    • 基于TCP/IP指纹识别目标系统(如Linux或Windows)。

补充说明:

  • 扫描方式可根据需求组合(如nmap -sS -O target.com );使用时需遵守法律。

一百二十四、sql 注入的几种类型?

SQL注入通过注入恶意SQL代码,操纵数据库查询。以下是主要的6种类型(基于攻击原理):

  1. 基于错误的注入(Error-based)
    • 利用数据库错误信息(如MySQL错误)泄露数据。常用于快速获取信息。
  2. 基于布尔的盲注(Boolean-based Blind)
    • 通过真/假条件响应(如页面内容变化)推断数据;不依赖错误信息。
  3. 基于时间的盲注(Time-based Blind)
    • 使用延时函数(如sleep())观察响应时间判断条件真假。
  4. 联合查询注入(Union-based)
    • 注入UNION SELECT语句合并结果;直接获取数据库内容。
  5. 堆叠查询注入(Stacked Queries)
    • 执行多个SQL语句(如; DROP TABLE users);常用于高权限攻击。
  6. 带外查询注入(Out-of-band)
    • 通过DNS或HTTP请求将数据外传;用于绕过防火墙。

补充说明:

  • 所有类型都源于输入未过滤,修复需使用参数化查询(如Prepared Statements)。

一百二十五、报错注入的函数有哪些?10 个

报错注入利用数据库函数触发错误信息泄露数据。以下是10个常见函数(基于MySQL示例,其他数据库类似):

  1. extractvalue() - 用于XML解析错误(如extractvalue(1,concat(0x7e,version())))。
  2. updatexml() - 类似extractvalue,通过XML路径错误泄露数据。
  3. floor() - 配合rand()group by触发重复键错误(如select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)。
  4. exp() - 数值溢出错误(如exp(~(select*from(select user())x))。
  5. pow() - 类似exp,通过超大指数触发错误。
  6. geometrycollection() - GIS函数参数错误泄露数据。
  7. polygon() - 地理空间函数错误。
  8. multipoint() - 类似polygon,用于特定数据库。
  9. multilinestring() - GIS函数触发语法错误。
  10. name_const() - 低版本MySQL错误(如name_const(version(),1))。

补充说明:

  • 这些函数需结合注入点使用(如WHERE子句);修复建议启用数据库错误日志过滤。

一百二十六、延时注入如何来判断?

延时注入(Time-based Blind SQL Injection)通过引入延时函数判断查询条件真假。判断步骤如下:

  1. 识别潜在注入点:在输入字段(如URL参数或表单)添加时间相关函数(如sleep(5)),观察响应是否延迟。
  2. 构建条件查询:注入布尔条件语句(如if(1=1,sleep(5),0)),如果响应延迟5秒,则条件为真。
  3. 逐位提取数据:通过二分法或逐字符判断(如if(ascii(substr(database(),1,1))>100,sleep(2),0)),根据延迟推断数据值。
  4. 验证工具辅助:使用工具(如sqlmap)自动检测延时参数(--technique=T)。

补充信息:

  • 常见延时函数:MySQL的sleep()、PostgreSQL的pg_sleep();防御需过滤输入和限制查询执行时间。

一百二十七、如何拿一个网站的 webshell?

获取webshell(一种恶意脚本用于控制网站服务器)需利用漏洞,但仅限授权测试(如渗透测试)。过程如下:

  1. 漏洞利用前期
    • 识别漏洞:通过扫描(如nmap或Burp Suite)发现弱点(如SQL注入或文件上传)。
  2. 关键步骤
    • 上传webshell:利用文件上传漏洞(如绕过扩展名检查)上传PHP或ASP脚本(常见工具:AntSword或BeEF)。
    • 注入写文件:通过SQL注入(如into outfile)写入webshell到服务器目录。
    • 代码执行:远程命令执行(RCE)漏洞执行脚本创建webshell。
  3. 后期控制
    • 访问webshell URL执行命令(如文件管理或提权)。

防御建议:强化上传过滤、禁用危险函数(如eval())、定期审计代码。
重要:未经授权操作属违法,请仅在合法渗透测试中实施。


一百二十八、sql 注入写文件都有哪些函数?

在SQL注入中,可利用函数写入文件(如webshell)。以下是常见的6个函数(基于MySQL):

  1. into outfile - 标准文件写入(如select '恶意代码' into outfile '/var/www/shell.php' );需FILE权限。
  2. into dumpfile - 类似outfile,但写入二进制文件;避免字符转换。
  3. load_file() + 外部工具 - 读取文件后结合其他漏洞写入(如通过日志文件注入)。
  4. secure_file_priv配置绕过 - 修改MySQL配置允许写入(需高权限)。
  5. mysqldump命令注入 - 在注入点执行系统命令写入文件(如; system echo '代码' > shell.php )。
  6. PostgreSQL的COPY TOpg_write_file() - 其他数据库类似函数。

补充说明:

  • 写入需绝对路径和权限;防御建议限制数据库FILE权限和使用WAF。

一百二十九、如何防止 CSRF?

防止CSRF(跨站请求伪造)的关键是验证请求来源。以下是5种核心防御措施:

  1. CSRF Tokens
    • 服务器生成唯一令牌嵌入表单或Cookie,每次请求验证;令牌需随机且过期。
  2. SameSite Cookie属性
    • 设置Cookie为SameSite=StrictLax阻止跨域请求携带。
  3. Referer/Origin头检查
    • 验证HTTP头部RefererOrigin是否来自可信域。
  4. 关键操作添加额外认证
    • 敏感操作(如转账)要求重新输入密码或2FA。
  5. 框架内置防护
    • 使用现代框架(如Spring Security或Django CSRF中间件)自动处理。

补充信息:

  • CSRF常见于GET请求,建议敏感操作用POST方法;定期安全测试可发现漏洞。


网站公告

今日签到

点亮在社区的每一天
去签到