某大厂MySQL面试之SQL注入触点发现与SQLMap测试

SQL注入漏洞通常发生在应用程序的输入接口未对用户输入进行充分过滤和验证时。攻击者可以通过在输入字段中注入恶意的SQL查询语句,使得数据库执行未授权的操作。​编辑

SQLMap的工作原理:

  1. 识别潜在的SQL注入点 :SQLMap使用一种多维度的分析方式来探测SQL注入点。它会对URL中的参数、表单数据、HTTP头信息等进行检测,通过自动化的方式检测数据库是否存在SQL注入漏洞。

  2. 测试注入点 :SQLMap会向被测系统发送特定的SQL payload(例如:' OR 1=1--),并检查响应结果。如果数据库返回了错误信息或查询结果发生了异常变化,SQLMap就可以确认该点可能是一个SQL注入点。

  3. 自动化漏洞利用 :当SQLMap确认一个注入点时,它会尝试利用该漏洞进行更深层次的攻击,如提取数据库表结构、数据、甚至执行操作系统命令等。

8.1.1 Masscan端口扫描

Masscan是如何工作的:

Masscan是一款高效的端口扫描工具,之所以速度快,主要得益于它的并发设计和高效的包发送方式。Masscan使用了以下技术:

  1. 异步I/O模型 :Masscan使用非阻塞的方式发送和接收数据包,这意味着它可以同时向多个目标发送扫描请求,极大地提升了扫描的速度。

  2. 自定义协议栈:Masscan实现了一个自定义的协议栈,并且能够使用原始IP报文发送数据包。这样,它可以绕过操作系统的TCP/IP协议栈,从而减少了通信延迟。

  3. 无握手扫描:Masscan通过发送SYN包(半开连接)来探测端口是否开放,无需等待完整的握手过程。这使得扫描速度大大提高。

8.1.2 小工具的编写与修改

我曾经编写过一些小工具来帮助进行自动化的安全测试,比如:

  1. 自动化扫描工具:用于检测网站的常见漏洞,如XSS、SQL注入、弱口令等。
  2. 定制化漏洞扫描工具:为特定的业务系统编写扫描脚本,扫描一些比较难检测的漏洞,比如跨站请求伪造(CSRF)和逻辑漏洞。

对于使用过的工具,我做过一些定制化修改,例如:

  • 修改开源工具:比如将现有的漏洞扫描工具增加了特定功能,比如API的自动化测试或更加精确的扫描引擎。
  • 增加报告功能:我曾经修改一个工具,使其支持生成更加详细的漏洞报告,包括影响范围、修复建议等。

8.1.3 提高Python扫描速度与GIL锁

在Python中,**GIL(全局解释器锁)**是一个会影响多线程并发性能的问题。Python中的GIL保证同一时间只有一个线程在执行字节码,这会限制CPU密集型任务的并行处理能力。

要提高Python扫描工具的性能,可以采取以下几种方式:

  1. 使用多进程而非多线程 :由于GIL的限制,Python的多线程在进行CPU密集型任务时并不能真正并行执行。通过使用multiprocessing模块,可以在多个进程中分配任务,从而绕过GIL的限制,实现并行计算。

  2. 使用异步编程 :对于IO密集型任务,使用异步IO(例如asyncio库)可以大幅提升性能,因为异步IO能在等待响应时并发执行其他任务。

  3. 使用C扩展:如果有性能瓶颈,可以考虑将核心功能用C/C++编写,通过Python的C扩展模块来加速计算。

8.1.4 影响较大的漏洞

我发现的一个影响较大的漏洞是XXE漏洞(XML外部实体注入)。该漏洞允许攻击者通过操控XML请求,诱使服务器解析恶意的外部实体,进而引发拒绝服务(DoS)、敏感数据泄露或服务器内部信息泄漏等问题。这个漏洞的影响范围较广,很多应用程序都可能受到这种漏洞的影响,尤其是没有对用户输入进行正确验证和过滤的XML解析器。

8.1.5 常见的Web漏洞

  1. SQL注入(SQLi)
  2. 跨站脚本(XSS)
  3. 跨站请求伪造(CSRF)
  4. 命令注入
  5. 不安全的直接对象引用(IDOR)
  6. 会话劫持
  7. 路径遍历
  8. 信息泄露
  9. 文件上传漏洞
  10. XML外部实体(XXE)

8.1.6 硬件安全研究

我有一定的硬件安全研究经验,特别是在**物联网设备(IoT)**的安全性方面。通过对固件进行逆向分析、硬件漏洞测试等,发现过一些设备在身份认证、通信加密等方面的安全缺陷。通过分析硬件的通信协议与加密算法,我曾经成功绕过了某些硬件加密保护,获得了设备的控制权限。

8.1.7 反爬虫技术与绕过

针对反爬虫技术,通常的对策包括:

  • 无头浏览器模拟:使用无头浏览器(如Puppeteer或Selenium)模拟真实用户的行为。
  • IP轮换与代理池:通过频繁更换IP或使用代理池,防止IP被封禁。
  • 验证码识别与绕过:通过OCR技术识别验证码,或者通过自动化工具进行验证码绕过。
  • 模拟人类行为:通过引入延迟、随机点击等方式,模拟真实用户的行为。

如果无头浏览器被检测到了,可以考虑:

  • 改变User-Agent:定期更换浏览器指纹或修改HTTP头信息。
  • 使用不同的IP和代理:通过IP轮换避免被反爬虫系统识别。
  • 脚本重构:调整爬虫的行为模式,使其更加人性化,避免被反爬虫系统检测到。

8.1.8 Nmap扫描

Nmap扫描类型:

  1. SYN扫描(半开扫描):向目标发送SYN包,目标返回SYN-ACK包表示端口开放。此扫描不完成三次握手,较为隐蔽。
  2. TCP连接扫描:完整的三次握手,扫描时建立完整连接。
  3. UDP扫描:针对UDP端口,直接发送UDP包并等待响应。
  4. FIN扫描:发送FIN包进行扫描,适用于某些防火墙策略绕过。

不接触目标探测端口 :可以使用隐匿扫描技术,例如通过发送SYN包进行半开连接,目标不会知道扫描的源IP。

8.1.9 Yara规则编写

如何编写Yara规则:假设我们需要检查一个字典中的特定键值对,可以编写类似以下的Yara规则:

yara 复制代码
rule test_rule  
{  
    strings:  
        $k1_value = "v1"  
        $k2_value = "v2"  
        $k3_value = "v3"  
    condition:  
        $k1_value in (k1) and $k2_value in (k2) and $k3_value in (k3)  
}  

8.2.0 XSS原理与平台实现

XSS攻击原理:XSS通过注入恶意脚本代码到Web页面中,目标用户浏览页面时执行恶意脚本,造成信息泄露、账户劫持等危害。实现类似BeEF的XSS平台,需注重跨域问题。可以通过设置合适的CORS策略或者使用WebSocket技术实现跨域通信。

8.2.1 IP频率限制与信誉度模型

IP频率限制通常基于请求数量/时间段 的计算,例如单个IP在一分钟内发送超过100次请求会被限制。信誉度模型是基于IP的行为分析,通过历史行为判断IP是否可信,例如频繁的非法请求会降低其信誉度。

8.2.2 SCTP协议

SCTP(流控制传输协议)是一种传输层协议,具有多个流和多宿主的特点,适合高可用性网络。它支持多重路径传输,可以在网络出现故障时自动切换路径,从而优化网络可靠性。

相关推荐
绝无仅有4 小时前
某互联网大厂的面试go语言从基础到实战的经验和总结
后端·面试·github
澡点睡觉4 小时前
【golang长途旅行第38站】工厂模式
开发语言·后端·golang
小蒜学长4 小时前
基于SpringBoot+Vue的健身房管理系统的设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
这里有鱼汤4 小时前
你以为 FastAPI 足够强?其实 Litestar 能让你的项目更轻量高效
后端·python
菜鸟谢5 小时前
windows vscode go 编译速度慢问题
后端
Victor3565 小时前
Redis(51)如何监控Redis哨兵的状态?
后端
止观止5 小时前
GitHub App 架构解析与最佳实践
架构·github
IT_陈寒5 小时前
Python性能优化:5个被低估的魔法方法让你的代码提速50%
前端·人工智能·后端
计算机毕业设计木哥5 小时前
Python毕业设计推荐:基于Django的饮食计划推荐与交流分享平台 饮食健康系统 健康食谱计划系统
开发语言·hadoop·spring boot·后端·python·django·课程设计