最近在准备面试,收集到的一些面试题供大家参考。
1."`"符号(反单引号)在PHP和SQL中的作用
PHP中:反引号用于执行操作系统命令,并返回输出(等价于
shell_exec())。例如:$output = `ls -l`; // 执行系统命令SQL中(如MySQL):反引号用于转义标识符(表名、列名等),避免与关键字冲突。例如:
SELECT `select` FROM `table`; -- "select"是关键字,用反引号包裹区别:PHP中用于系统调用,SQL中用于语法转义。需注意SQL注入风险(PHP反引号执行命令时若输入未过滤,可能导致漏洞)。
2.Python语句'int'.class的含义及关联漏洞
含义:在Python中,此语句非法(Python无
.class语法)。正确获取类类型的方式为type(int)或int.class。该语句可能混淆Java语法(Java中int.class表示基本类型Class对象)。关联漏洞:此类语法混淆可能暴露代码注入或反序列化漏洞,攻击者利用反射机制动态执行代码(如通过
subclasses()实现沙箱逃逸)。
3.Java反射的作用
Java反射允许程序在运行时动态获取类信息(方法、字段、构造器等),并操作对象行为。具体作用包括:
动态加载类:通过
Class.forName()加载未知类。调用私有方法/字段:使用
setAccessible(true)绕过访问控制。框架开发:Spring(依赖注入)、Hibernate(ORM)等利用反射实现配置化。
缺点:性能较低(JVM无法优化动态调用)、破坏封装性。
4.Java反序列化的基本原理
反序列化将字节流恢复为对象,主要通过ObjectInputStream.readObject()实现:
过程:
读取字节流中的魔数、版本号、类描述信息。
根据类描述动态加载类(需实现
Serializable接口)。递归重建对象图(包括引用关系),不调用构造函数。
安全风险:恶意字节流可导致远程代码执行(如Apache Commons Collections漏洞)。防御需校验
serialVersionUID、使用白名单。
5.SSRF漏洞利用思路
内网探测