2025年渗透测试面试题总结-快手[实习]安全工程师(题目+回答)

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

目录

快手[实习]安全工程师

一面问题分析与详细回答

[1. 自我介绍](#1. 自我介绍)

[4. 项目问题与解决](#4. 项目问题与解决)

[7. 防止SQL注入(Web API场景)](#7. 防止SQL注入(Web API场景))

[8. Linux查看进程PID](#8. Linux查看进程PID)

[10. 为什么用MongoDB](#10. 为什么用MongoDB)

[12. HTTPS建立过程](#12. HTTPS建立过程)

[13. Python内存管理](#13. Python内存管理)

[16. Python多线程与GIL](#16. Python多线程与GIL)

[17. IP排序代码题](#17. IP排序代码题)

二面问题扩展解析

[3. 攻击溯源(方法论与案例)](#3. 攻击溯源(方法论与案例))

[5. Webshell检测(静态+动态)](#5. Webshell检测(静态+动态))

[8. 九宫格字母组合(回溯算法)](#8. 九宫格字母组合(回溯算法))

[10. DNS安全威胁与防护](#10. DNS安全威胁与防护)

快手[实习]安全工程师

复制代码
### 一面 

1. 自我介绍

2. 问项目

3. 针对项目问了很多详细的问题,不便透露,通用问题如下:

4. 做项目的时候有没有遇到什么问题,怎么解决

5. 做项目学到了什么东西

6. 项目中有没有什么地方自己做过优化

7. 有没有对网站做过渗透测试

8. Linux操作熟悉吗,怎么看进程PID

9. 用过什么数据库,答:sqlite,mongodb,面试官好像不太了解没咋问

10. 为什么用mongodb

11. 了解ES吗(Elasticsearch)

12. HTTPS建立过程

13. python怎么管理内存

14. 深拷贝和浅拷贝区别

15. python多进程、多线程、协程有用到吗,都在什么地方用到

16. python可以实现真正的多线程吗

17. 代码题:ip排序



1. 写Web API的时候怎么防止SQL注入

2. 怎么防XSS

3. 了解越权漏洞么,有没有挖过越权漏洞

4. 有没有什么比较擅长的我还没问到的

### 二面 

1. 问项目

2. 项目哪一块时间花的比较多

3. 怎么溯源攻击

4. 举一个溯源攻击的例子

5. 怎么检测webshell

6. sql注入在mysql和sqlserver中有什么区别

7. 想找安全开发的岗位还是安全研究的岗位

8. 代码题:手机九宫格键盘,输入数字,输出所有的字母组合 如输入23,输出['ad','ae','af','bd','be','bf','cd','ce','cf']

9. 讲一下DNS协议的作用、解析过程

10. DNS协议的安全问题

11. 实习时间

一面问题分析与详细回答


1. 自我介绍

结构化回答(3点核心要素)

  1. 技术背景
    • 主语言:Python(5年+),熟悉安全开发框架(如Django、Flask)。
    • 安全技能:渗透测试(OWASP TOP 10实战)、漏洞分析(CVE复现经验)、日志溯源。
    • 工具链:Burp Suite、Nmap、Wireshark、Metasploit。
  2. 项目亮点
    • 开发安全监测平台:集成实时日志分析,识别SQL注入/XSS攻击,误报率<5%。
    • 自动化渗透工具:支持多线程爬虫+漏洞POC验证,效率提升40%。
  3. 岗位适配性
    • 目标:安全开发岗,结合代码能力与攻防思维,构建高鲁棒性系统。
    • 优势:熟悉DevSecOps流程,具备SDL(安全开发生命周期)实践经验。

4. 项目问题与解决

通用回答框架(问题-方案-结果)

  • 问题:高并发场景下日志丢失(日均丢失量达20%)。
  • 方案
    1. 引入Kafka消息队列,异步处理日志写入。
    2. 增加本地缓存层(Redis),网络异常时暂存日志。
  • 结果:丢失率降至0.5%,系统吞吐量提升3倍。

7. 防止SQL注入(Web API场景)

防御措施(4层防护)

  1. 参数化查询

    复制代码
    python`# Django ORM示例 User.objects.raw('SELECT * FROM users WHERE name =%s', [request.name]) `
  2. 输入验证 :正则匹配白名单(如邮箱格式^[a-z0-9]+@[a-z]+\.[a-z]{2,3}$)。

  3. 权限控制:数据库账户仅授予SELECT/INSERT权限,禁用DROP/ALTER。

  4. WAF集成 :部署ModSecurity,拦截UNION SELECT等攻击模式。


8. Linux查看进程PID

常用命令(3种方式)

  1. ps命令

    复制代码
    bash`ps -ef | grep nginx # 显示nginx进程的PID、PPID `
  2. pgrep直接定位

    复制代码
    bash`pgrep -f "python app.py" # 返回运行app.py 的PID `
  3. top交互界面 :按Shift+P按CPU排序,实时查看PID及资源占用。


10. 为什么用MongoDB

核心优势(3点)

  1. 灵活模式:JSON文档结构适配动态日志格式(如不同攻击类型的字段差异)。
  2. 横向扩展:分片集群支持PB级数据存储,轻松应对安全日志海量增长。
  3. 聚合分析 :内置$group$bucket等操作,实现攻击IP频次统计等场景。

12. HTTPS建立过程

详细步骤(6步握手)

  1. Client Hello:客户端发送TLS版本、加密套件列表、随机数A。
  2. Server Hello:服务端选择加密套件(如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256),返回随机数B和证书链。
  3. 证书验证:客户端验证证书有效性(CA签名、有效期、域名匹配)。
  4. 密钥交换
    • 客户端生成随机数C,用服务端公钥加密发送。
    • 双方通过ECDHE算法生成会话密钥。
  5. Finished报文:双方用密钥加密验证消息完整性。
  6. 加密通信 :后续数据通过AES-GCM对称加密传输。
    补充协议 :HSTS头(Strict-Transport-Security)强制HTTPS,防止降级攻击。

13. Python内存管理

机制与优化(3层设计)

  1. 引用计数
    • 对象被引用时计数+1,归零时立即回收(如del obj)。
    • 循环引用问题:通过gc.collect() 触发分代回收。
  2. 分代垃圾回收
    • 分代策略:新生成对象在0代,存活时间越久代越高。
    • 回收频率:0代>1代>2代,平衡性能与内存释放。
  3. 内存池优化
    • 小整数(-5~256)、短字符串(无特殊字符)预分配复用。
    • 使用__slots__减少类实例内存占用(替换动态__dict__)。

16. Python多线程与GIL

真相与应对(3点结论)

  1. GIL限制:CPython解释器中,线程执行需获取全局锁,导致多线程无法并行执行CPU密集型任务。
  2. 适用场景
    • I/O密集型:如网络请求、文件读写,线程阻塞时自动释放GIL。
    • 协程优化:asyncio+async/await实现高并发(单线程万级连接)。
  3. 绕过方案
    • 多进程:multiprocessing模块利用多核CPU。
    • C扩展:将计算密集型逻辑用C/C++编写(如NumPy)。

17. IP排序代码题

Python实现与测试

复制代码
python`def ip_sort(ip_list): # 将IP按四段数字升序排列 return sorted(ip_list, key=lambda x: tuple(map(int, x.split('.')))) # 测试用例 ips = ["192.168.1.10", "10.0.24.255", "172.16.0.1"] print(ip_sort(ips)) # 输出:['10.0.24.255', '172.16.0.1', '192.168.1.10'] `

关键点 :字符串直接排序会导致"192.168.1.2"排在"192.168.1.10"之后,转换为整数元组可避免此问题。


二面问题扩展解析


3. 攻击溯源(方法论与案例)

技术链路(4步流程)

  1. 日志采集
    • Web日志:Nginx/Apache访问日志提取攻击IP、User-Agent、Payload(如/admin.php?id=1' AND 1=1)。
    • 系统日志:Linux的/var/log/auth.log 记录SSH爆破尝试。
  2. 关联分析
    • 时间窗口:定位攻击时间段内的所有关联事件。
    • 威胁情报:VirusTotal查询IP历史行为(如是否代理服务器)。
  3. 流量取证
    • Wireshark过滤:tcp.port == 80 && http.request.method == "POST"捕获攻击请求。
    • Payload解码:Base64或URL解码隐藏指令(如cmd=whoami)。
  4. 响应处置
    • 短期:防火墙封锁IP(iptables -A INPUT -s 1.2.3.4 -j DROP)。
    • 长期:修复漏洞(如补丁更新)、增强监控规则。

溯源案例

在一次Webshell上传事件中,通过以下步骤追踪:

  1. 分析Web日志发现异常文件upload.php 在非工作时间被访问。
  2. 关联系统日志,发现同一时间点新增可疑用户backdoor
  3. 提取文件哈希(MD5)在VirusTotal匹配到已知Webshell家族(如China Chopper)。
  4. 反向查询关联IP,发现其属于某VPS提供商,上报威胁情报平台。

5. Webshell检测(静态+动态)

检测技术(5种手段)

类型 方法 工具示例
静态检测 特征码匹配 YARA规则(匹配eval($_POST['cmd'])
熵值分析 检测文件熵值异常(高混淆代码)
动态检测 行为监控 OSSEC监控文件创建/删除行为
流量分析 Suricata检测异常HTTP请求(长连接、加密载荷)
沙箱检测 动态执行 Cuckoo Sandbox分析文件行为(进程树、网络连接)

防御建议

  • 文件上传限制:仅允许特定后缀(如.jpg)、校验MIME类型。
  • 定期扫描:ClamAV定时全盘扫描,配合人工复核。

8. 九宫格字母组合(回溯算法)

代码与优化

复制代码
python`def letter_combinations(digits): if not digits: return [] mapping = { '2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz' } res = [] def backtrack(index, path): if index == len(digits): res.append(''.join(path)) return for char in mapping[digits[index]]: path.append(char) backtrack(index + 1, path) path.pop() backtrack(0, []) return res `

复杂度分析

  • 时间:O(3^N *4^M),N为输入中对应3字母的数字数(如2、3),M为对应4字母的数字数(如7、9)。
  • 空间:O(N+M)递归栈深度,结果列表空间O(3^N *4^M)。

10. DNS安全威胁与防护

攻击类型与防御(3类重点)

  1. DNS劫持
    • 手法:篡改路由器或ISP的DNS响应。
    • 防护:启用DNSSEC(通过RRSIG记录验证数据完整性)。
  2. 缓存投毒
    • 手法:伪造DNS响应污染递归服务器缓存。
    • 防护:随机化查询ID和源端口(增加攻击难度)。
  3. DDoS攻击
    • 手法:洪水攻击DNS服务器(如UDP反射放大攻击)。
    • 防护:部署Anycast网络分散流量,启用速率限制。

协议演进

  • DoH(DNS over HTTPS):加密DNS查询,防止运营商监听。
  • DoT(DNS over TLS):使用TLS层加密,端口853。
相关推荐
平生不喜凡桃李5 分钟前
Linux 文件(3)
linux·运维·服务器
緈福的街口11 分钟前
【leetcode】75.颜色分类
算法·leetcode·职场和发展
XiaoyaoCarter36 分钟前
每日leetcode
数据结构·c++·算法·leetcode·职场和发展·kmp算法
子非衣1 小时前
Ubuntu部署私有Gitlab
linux·ubuntu·gitlab
code monkey.2 小时前
【寻找Linux的奥秘】第七章:虚拟地址空间
linux·操作系统·c/c++
YuforiaCode2 小时前
LeetCode 3024.三角形类型
算法·leetcode·职场和发展
不愧是你呀2 小时前
Linux中I/O复用机制epoll
linux·服务器·网络
wtsafe3 小时前
唯创安全优化纸业车间安全环境:门口盲区预警报警器的应用与成效
安全
pccai-vip3 小时前
系分论文《论软件系统安全分析和应用》
安全·web安全·软考论文
1977835463 小时前
Linux系统安全
linux