sqlmap的使用

摘要:使用sqlmap注入本地搭建的sqli-labs过程记录

学习SQL 注入,一直在手注,关于工具的使用的学习一直拖,根据《Web安全攻防:渗透测试实战指南》书中教学,记录一遍使用sqlmap跑本地环境下的sqli-labs的过程。

sqlmap基础

判断是否存在注入点

1.根据url是否存在注入点

payload:sqlmap.py -u <目标注入点>当注入点参数大于等于两个时,需要加双引号

image

截图的时候不小心,把上面的的payload和sqlmap的logo截掉了,图片中的英语并不难理解,第一个询问我们经过测试目标注入点的后台的数据库引擎仿佛是MySQL,询问是否跳过对其他数据库管理引擎的测试;第二个问句询问在以后的测试中是否一律测试针对MySQL的等级为1的测试,选择
(yes)即可。

image

这张图就较为完整地展示了该后台的信息,并且我们知道,这里存在注入。

2.根据文本文件中的请求判断是否存在注入点

payload:sqlmap.py -r <TXT文件>

一般当传递参数的方式为POST时,我们抓包将请求保存为文本文件,使用上述的方法进行post类型的注入;在get方法中,也是有效的。

查询当前用户下的所有数据库

sqlmap.py -u <目标注入点> --dbs

获取数据库中的表名

sqlmap.py -u <目标注入点> -D <指定数据库名> --tables

获取表中的字段名

sqlmap.py -u <目标注入点> -D <指定数据库名> -T <指定表名> --columns

获取字段内容

sqlmap.py -u <目标注入点> -D <指定数据库名> -T <指定数据表名> -C <指定字段名> --dump

获取数据库的所有用户

sqlmap.py -u <目标注入点> --users

获取数据库用户的密码

sqlmap.py -u <目标注入点> --passwords

获取当前网站数据库的名称

sqlmap.py -u <目标注入点> --current-db

获取当前网站数据库的用户名称

sqlmap.py -u <目标注入点> --current-user

sqlmap进阶

--level 指定探测等级

sqlmap的探测共分为5(1~5)级,使用--level参数指定探测等级,不指定则默认使用等级为1的探测等级,其中5级最高,包含的payload最多,也最耗费时间。sqlmap的payload保存在sqlmap\xml\payloads文件夹下,可以看到分门别类的payload以xml文档形式保存。因此我们也可以添加自己的payload。

--is-dba 当前用户是否为管理权限

sqlmap.py -u <目标注入点> --is-dba

--roles 列出数据库管理员角色

用于查看数据库用户的角色,如果当前用户有权限读取包含所有用户的表,该命令会列举出每个用户的角色,也可以使用-U参数指定想看哪个用户的角色。该命令仅适用于当前数据库是Oracle时。

--referer HTTP Referer头

sqlmap可以再请求中伪造HTTP中的referer,当level参数设定为3以上时,会尝试对referer进行注入。可以使用referer命令来欺骗,如--referer http://www.baidu.com

--sql-shell 运行自定义SQL语句

该命令用于执行指定的SQL语句,如下,假设执行select * from users where id=1

sqlmap.py -u <目标注入点> --sql-shell

image

--os-cmd,--os-shell 运行任意操作系统命令

当数据库为MySQL、PostgreSQL或SQLserver且当前用户具有权限使用特定函数时该指令生效,但实现的原理有所不同。

数据库为MySQL和PostgreSQL时,sqlmap商户餐一个二进制库,包含用户自定义的函数sys_exec()sys_eval()这两个函数可以执行系统命令。在Microsoft SQL Server中,sqlmap使用xp_cmdshell存储过程,如果被禁用(2005及以上版本默认禁用),sqlmap会重新启用它,如果不存在则会被创建。

--os-shell 参数可以模拟一个真实的Shell,当不能执行多语句时,仍可以使用INTO OUTFILE写进可写目录,创建一个Web后门。--os-shell支持ASP、ASP.NET、JSP和PHP四种语言。(要执行改参数,需要有数据库管理员权限,--is-dba为True)

--file-read 从数据库服务器中读取文件

适用于MySQL、PostgreSQL或Microsoft SQL Server且当前用户有权限执行特定的函数时。读取的文件可以是文本可以是二进制文件。

sqlmap.py -u <目标注入点> --file-read "路径" -v 1

--file-write --file-dest 上传文件到数据库服务器中

数据库:MySQL、PostgreSQL、Microsoft SQL Server
且:当前用户有权限使用特定的函数时。可以上传文本文件或二进制文件

sqlmap的自带绕过waf脚本

默认情况下,出了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改,所以我们在遇到就像宽字节注入或者是需要变换大小写来绕过的waf时,sqlmap不太管用,为了解决这个问题,sqlmap自带了解决此困境的绕过脚本,使用--tamper参数来使用这些载荷来绕过waf的检测。

sqlmap.py XXXXX --tamper "模块名"

常用的tamper脚本:

  • apostrophemask.py

作用:将引号替换为UTF-8,用于过滤单引号

  • base64encode.py

作用:替换为base64编码

  • multiplespaces.py

作用:围绕SQL关键字添加多个空格

  • space2plus.py

作用:用+替换空格,空格被过滤时使用

  • nonrecursivereplacement.py

作用:作为双重查询语句,用双重语句替换预定义的SQL关键字(适用于非常弱的自定义过滤器,例如将SELECT替换为空,也就是当我们在手注需要使用双写绕过的情况下可以改用sqlmap使用此模块)

  • space2randomblank.py

作用:将空格替换为其他有效字符

  • unionalltounion.py

作用:将UNION ALL SELECT替换为UNION SELECT

  • securesphere.py

作用:追加特制的字符串

  • spae2hash.py

作用:将空格替换为#,并添加一个随机字符串和换行符

  • space2mssqlblank.py (mssql)

作用:将空格替换为其他空符号

  • space2mssqlhash.py

作用:将空格替换为#,并添加一个换行符

  • between.py

作用:用NOT BETWEEN 0 AND替换大于号(>),用BETWEEN AND 替换等号(=)

  • percentage.py

作用:ASP允许在每个字符前面添加一个%号

  • sp_password.py

作用:从DBMS日志的自动模糊处理的有效载荷中追加sp_password

  • charecode.py

作用:对给定的Payload全部字符使用URL编码(不处理已经编码的字符)

  • randomcase.py

作用:随机大小写

  • charuniocodeencode.py

作用:字符串unicode编码

  • space2comment.py

作用:将空格替换为/**/

  • equaltolike.py

作用:将等号替换为like

  • geatest.py

作用:绕过对“>”的过滤,用GREATEST替换大于号

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功...
    道书简阅读 1,337评论 0 0
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 1,945评论 0 5
  • sqlmap在默认的的情况下除了使用char()函数防止出现单引号,没有对注入的数据进行修改,还可以使用--tam...
    新一mghc阅读 1,148评论 0 1
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,147评论 2 22
  • 1. MySQL数据库注入 检查注入点(主要看是否能返回消息):sqlmap.py -u url 爆所有库:sql...
    StormZang阅读 8,054评论 0 3