Sqlmap注入参数
😊😊😊😊😊😊😊🌭🌭🌭🌭🌭🌭🌭❤️❤️❤️❤️❤️❤️❤️🥨🥨🥨🥨
-----------------------------------------------------------------------------注意----------------------------------------------------------------------------------------------------------
没有授权的渗透测试均属于违法行为,请勿在未授权的情况下使用本文中的攻击手段,建议本地搭建环境进行测试,本文主要用于学习分享,请勿用于商用及违法用途,如果用于非法用途与本文作者无关。
1.Sqlmap强制设置DBMS
😊😊😊😊😊😊😊🌭🌭🌭🌭🌭🌭🌭❤️❤️❤️❤️❤️❤️❤️🥨🥨🥨🥨
默认情况下Sqlmap
会自动识别探测目标Web
应用程序的后端数据库管理系统(DBMS
),以下列出完全支持的DBMS
种类。
Mysql、Oracle、Microsoft SQL Server、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB、Informix
--dbms
数据库管理系统名称 [版本号]
例如:--dbms mysql 5.0
,--dbms microsoft sql server 05
这里的版本号是可选择的,知道版本好的话,可以直接添加,不知道版本号的话也不影响。
使用dbms
参数进行测试
python sqlmap.py -u "http://192.168.153.136/sqli-labs-master/Less-1/?id=1" --dbms mysql --current-db
--current-db
这个参数表示的是当前的数据库
通过上面的探测可以知道数据库的版本大于等于5.0
,当前的数据库名为security
2.Sqlmap强制设置OS系统
😊😊😊😊😊😊😊🌭🌭🌭🌭🌭🌭🌭❤️❤️❤️❤️❤️❤️❤️🥨🥨🥨🥨
默认情况下Sqlmap
会自动识别探测目标Web
应用程序的后端操作系统(OS
),以下列出Sqlmap
完全支持的OS
种类。
Linux
、Windows
例如:--os windows
或 --os linux
这个选项不是强制性,当然如果知道操作系统类型的话,可以加快探测速度。强烈建议只在完全确定底层操作系统的后端数据库管理系统时才使用它。在不知道的情况下,SQlmap
会自动识别。
笔者本地搭建的环境是windows
,设置参数如下所示
python sqlmap.py -u "http://192.168.153.136/sqli-labs-master/Less-1/?id=1" --dbms mysql --os windows --current-db
尝试反面教材,如果设置成Linux会是什么情况呢?
python sqlmap.py -u "http://192.168.153.136/sqli-labs-master/Less-1/?id=1" --dbms mysql --os linux --current-db
sqlmap
还是比较智能的,故意误导它,它也能正确识别,嘎嘎好用。
3.SQLmap关闭负载转换机制
😊😊😊😊😊😊😊🌭🌭🌭🌭🌭🌭🌭❤️❤️❤️❤️❤️❤️❤️🥨🥨🥨🥨
在检索结果时,sqlmap
使用一种机制,在这种机制中,所有条目都被转换成字符串类型,并在NULL
值的情况下用空格字符替换。这样做是为了防止出现任何错误状态(例如,将空值与字符串值连接起来),并简化数据检索过程本身。尽管如此,还是有报告的案例(例如MYSQL DBMS
的旧版本)由于数据检索本身的问题(例如没有返回值)需要关闭这种机制(使用此开关)。
--os-cast
因为该参数年代有点久远,了解即可。
4.Sqlmap关闭字符转义机制
😊😊😊😊😊😊😊🌭🌭🌭🌭🌭🌭🌭❤️❤️❤️❤️❤️❤️❤️🥨🥨🥨🥨
在Sqlmap
需要在有效负载中使用(单引号分隔)字符串值(例如,选择‘foobar
’)时,这些将自动转义(例如,选择CHAR(102)+CHAR(111)+CHAR(98)+CHAR(97)+CHAR(114)
)。
这样做的原因有两个:混淆有效负载内容和防止后端服务器上查询转义机制(例如magic_quotes
大小)。
--no-escape