sqlmap注入技巧
收集了一些利用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 操作n
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
检测。
TIP3
sqlmap注入技巧的更多相关文章
- sqlmap注入技巧收集
收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...
- Sqlmap注入技巧收集整理
TIP1 当我们注射的时候,判断注入 http://site/script?id=10http://site/script?id=11-1 # 相当于 id=10http://site/script? ...
- Sqlmap注入技巧集锦
当我们注射的时候,判断注入 http://site/script?id=10 http://site/script?id=11-1 # 相当于 id=10 http://site/script?id= ...
- sqlmap 注入的方法及技巧
sqlmap 注入的方法及技巧 当给 sqlmap 这么一个 url 的时候,它会: 1.判断可注入的参数 2.判断可以用那种 SQL 注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些 ...
- SQLMAP注入教程-11种常见SQLMAP使用方法详解
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...
- sqlmap常用技巧整理
言 通过在乌云网上出现的很多SQL注入漏洞,因此来总结一下,大致使用SQLMAP所遇到的参数. 基本结构 基本SQLMAP的使用方式就如下所示,使用参数式的方式,按需求添加. 12 sqlmap.py ...
- sqlmap注入教程
1.SQLMAP用于Access数据库注入 (1)猜解是否能注入win: python sqlmap.py -u "http://www.stronkin.com/en/CompHonorB ...
- sqlmap注入小结
sqlmap注入时: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: 1.基于布尔的盲注,即可 ...
- 使用sqlmap注入DVWA的SQL Injection菜单
1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...
随机推荐
- 转载文章 MySQL与Oracle的区别
MySQL与Oracle的区别 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高 ...
- 洛谷P3515 [POI2011]Lightning Conductor(决策单调性)
题意 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j)) ...
- ObjectARXWizards & AutoCAD .NET Wizards 下载地址
Autodesk Developer Network ObjectARX Wizards The ObjectARX Wizards for AutoCAD 2016 for Visual Stud ...
- Orcale常用函数
1.ascii 作用: 返回指定的字符对应的十进制数 select ascii('A') ,ascii('a'),ascii(' ') from dual; 2.chr 作用:给出整数,返回对应的字符 ...
- 2017第八届蓝桥杯决赛(C++ B组)2.磁砖样式
磁砖样式 小明家的一面装饰墙原来是 310 的小方格. 现在手头有一批刚好能盖住2个小方格的长方形瓷砖. 瓷砖只有两种颜色:黄色和橙色. 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来. ...
- Maven with Scala
下面是一个在Maven使用Scala的pom.xml <?xml version="1.0" encoding="UTF-8" standalone=&q ...
- [NOI2009]管道取珠(DP)
Luogu1758 DarkBZOJ1566 题解 因为他要让我们求出每种状态出现次数的平方和,这样模拟两人取球的时候,设第一个人取球的方案为A,第二个人取球的方案为B, 这样对于每一个A,都有C(n ...
- 最长上升子序列问题(O(n^2)算法)
[题目描述] 给定N个数,求这N个数的最长上升子序列的长度. [样例输入] 7 2 5 3 4 1 7 6 [样例输出] 4 什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段不断严格上升的 ...
- Dijkstra算法图文详解
Dijkstra算法 Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不 ...
- 华东交通大学2015年ACM“双基”程序设计竞赛1007
Problem G Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Sub ...