最新的backtrack5(bt5)官方网站已经提供下载,backtrack5是基于ubuntu Lucid LTS. 内核2.6.38开发的,完全开源并和GPL兼容。

Backtrack 中文网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 5842|回复: 50

[资源] Sqlmap注入技巧集锦

   [复制链接]
枫珊
庆新冬
sqlmap 是一个自动SQL 射入工具。本文收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充、分享。


TIP1

当我们注射的时候,判断注入

http://site/script?id=10 http://site/script?id=11-1 # 相当于 id=10

http://site/script?id=(select 10) # 相当于 id=10

http://site/script?id=10 and 1=1 #失败

通过判断可发现and和or被过滤

http://site/script?id=10 # 失败

http://site/script?id=10; #失败

http://site/script?id=10); #失败

http://site/script?id=10)subquery; #失败

你可以用burp的intruder的字典跑,但是仍然失败。

这里可以用到SQL语句的case when …then … else … end语句

CASE WHEN语句在DB2,ORACLE,SQL SERVER系列,SYBASE等大型数据库都受到支持,是标准的SQL语句。 可以这样子理解:CASE… WHEN… THEN …ELSE …END

CASE WHEN 语法有两种情况: 第一种是CASE 后面不带表达式的;

CASE WHEN expression THEN 操作1
WHEN expression THEN 操作2
.......
ELSE 操作
END

第二种是CASE 后面带表达式的(而此时WHEN 后面的则是该表达式可能的值),通用。

CASE expression
WHEN expression值1 THEN 操作1
WHEN expression值2 THEN 操作2
.......
ELSE 操作n
END

http://host/script?id=11-(case when 1=1 then 1 else 0 end) 用1=1跟1=2测试http://host/script?id=10 # 当条件为真的时候 http://host/script?id=11 # 当条件为假的时候

可以很明显的看到返回不同,然后可以判断注入。那么怎么能让sqlmap去识别呢? Sqlmap默认是自己寻找注入点的,但是你加上一个*,可以引导他。 语句

sqlmap.py -u http://host/script?id=11-(case when 1=1星号 then 1)


注入最头痛的就是遇到过滤,sqlmap提供了字符转换的功能

“tamper=between”当然自己可以改写转换内容,文件在/tamper目录下。

关于post注入 sqlmap可以用-r参数 加载数据包

sqlmap.py -r post.txt

继续补充一点: having xor等逻辑符号也可以判断注入。

TIP2

POST注入

有两种方法来进行post注入,一种是使用

data
参数,将post的key和value用类似GET方式来提交。二是使用

-r
参数,sqlmap读取用户抓到的POST请求包,来进行POST注入检测。

查看payload

之前一直是加本地代理,然后用burpsuit来看sqlmap的payload,到现在才发现用

-v
参数就可以实现。一直认为

-v
实现的只是控制警告,debug信息级别。实际上使用

-v 3
就可以显示注入的payload,4,5,6还可以显示HTTP请求,HTTP响应头和页面。

使用google搜索

sqlmap可以测试google搜索结果中的sql注入,很强大的功能吧。使用方法是参数

-g
。不过感觉实际使用中这个用的还是很少的。

请求延时

在注入过程中请求太频繁的话可能会被防火墙拦截,这时候

delay
参数就起作用了。可以设定两次HTTP请求间的延时。有的web程序会在多次错误访问后屏蔽所有请求,这样就导致之后所有的测试无法进行,绕过这个策略可以使用

safe-url
,每隔一段时间去访问一个正常的页面。

伪静态页面

有些web服务器进行了url rewrite或者网站是伪静态的,无法直接提供测试参数,这样子可以使用

*
来代替要测试的参数。

执行系统命令

当数据库支持,并且当前用户有权限的时候,可以执行系统命令,使用

os-cmd
或者

os-shell
,具体的讲,当可以执行多语句的时候,会尝试用UDF(MySQL,PostgrepSQL)或者xp_cmdshell(MSSQL)来执行系统命令。不能执行多语句时,仍然会尝试创建一个webshell来执行语句,这时候就需要web的绝对路径了。总体来说,成功率偏低,不过个人也有成功的经验~

测试等级

sqlmap使用

level
参数来进行不同全面性的测试,默认为1,不同的参数影响了使用哪些payload,2时会进行cookie注入检测,3时会进行

useragent
检测。
sqlmap 一个自动SQL 射入工具(sqlmap.py)汉化直接可用版下载地址:
游客,如果您要查看本帖隐藏内容请回复



评分

参与人数 1 骨头 +69 收起 理由
admin + 69 支持分享!

查看全部评分

+1
5892°C
50
  • bennywuwuwuwu
  • 顾封人
  • yp1234
  • langyak
  • 雨苁
过: 他们
田才捷
祥萱
谢谢楼主,我回复下学习下
晨涵
谷安
楼主牛逼,谢谢
厚子瑜
隋灵凡
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
卫童轲
戈北嘉
汉化直接可用版
昌懿轩
尔逸美
看看看看啊看看啊
东青曼
班凯乐
谢谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

BackTrack是一套专业的计算机安全检测的Linux操作系统,简称BT。BackTrack 是一个基于Ubuntu GNU/Linux的发行版本,主要用做数字取证和入侵测试。它的名字引用自回溯法(backtracking)。BackTrack 给用户提供了大量功能强大但简单易用的安全工具软件。BackTrack还支持Live CD和Live USB启动方式,用户可以直接从移动介质启动该系统而不用将系统安装在硬盘上。BackTrack被设计成一体化的旨在安全审计用的livecd,曾经它是被最广泛采用的渗透测试框架并被世界各地的安全社区所使用。现在,BackTrack已被Kali Linux所代替,BT将不再维护。
快速回复 返回顶部 返回列表