sqlmap

本文将结合代码分析 sqlmap 中不同注入类型检测的实现方式,sqlmap 的注入检测均集成于 checkSqlInjection 函数中,笔者建议在阅读时对照着此函数源码。
sqlmap 使用一种极其巧妙的方式组合生成一个完整的 payload。
上文笔者从使用层面将 sqlmap 的基础用法展示出来,本文则通过代码层面对 sqlmap 在进行注入测试的前置步骤进行分析。
本系列文章将对 sqlmap 项目进行分析,首先会从使用层面简单了解 sqlmap 所支持的大部分功能,后续则通过代码分析的方式展开讲解项目逻辑。如无特殊说明,则默认调试环境为 python3 + sqlmap 1.5.11.9#dev。
之前有看到goby反制和松鼠A师傅蚁剑反制的文章,再想到之前写过sqlmap的shell免杀,觉得思路其实差不多,就写一篇sqlmap的反制吧。
前两篇主要说了SQLMAP从main如何一步一步运行到action()函数,然后我对MySQL的版本识别和识别确认进行了具体的分析。
上一篇主要说了SQLMAP从main如何一步一步运行到action()函数,然后我对MySQL的版本识别和识别确认进行了具体的分析。其中暂未分析的inject.getValue函数至关重要,将是我们这一节的关键部分;另外识别到DBMS之后,如何做进一步的注入也是需要关注的点。
作为web渗透界的神器之一,无论是挖掘src或者渗透测试,不少的师傅们都离不开这个工具。他的强大也不只是简单地自动化注入,后续文章我会逐渐带大家熟悉这个工具的原理。其实网上已有大佬做了很多的分析,我将更细致更基础地进行分析。
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等。
sqlmap一直是sql注入的神器。但是有时候它检测不出来注入点,这时就需要配合手动检测。今天我们就从源码角度来看一下sqlmap是如何判断是否可以注入的,以及如何根据我们手动测试的结果来”引导” sqlmap 进行注入。