SQL注入基础注入,零基础入门到精通,收藏这篇就够了

sql注入一般流程(附例题) 在与服务器数据库进行数据交互的地方拼接了恶意的sql代码,达到欺骗服务器执行恶意代码的目的。本质上是程序把用户输入的数据当成了sql语句执行。 阅读详情

SQL注入篇–基础注入

1.SQL注入原理

sql注入的原理就是在服务器后端对数据库进行操作请求之前,人为地对sql语句做一些恶意注入,从而达到人为预期效果,造成数据泄露甚至数据破坏。注入漏洞在OWASP2021年的总结中位列TOP10的第一名,可见注入漏洞的危害之大,理论上注入漏洞可以帮助我们办到任何后端可以办到的事情。

2.SQL注入条件

SQL注入漏洞发生的前提条件必须是有人为可控的一处sql语句,或者用户的输入可以对sql语句起到控制作用,那么用户便有可能找到可以被利用的漏洞点。即使服务器后端对用户输入做了验证,但是大部分情况下还是都可以想办法绕过的。

3. SQL注入的分类

在常用的方法中,sql注入可以分很多类:

  • 基于注入点分类,可以分为get注入,post注入等
  • 基于数据类型分类,可以分为字符型和数字型注入
  • 基于获取数据的方法可以分为报错注入和盲注
4.SQL注入的一般流程

判断是否存在注入 ==》 寻找注入点 ==》 构造payload ==》 执行payload进行攻击 ==》 结果分析处理

判断是存在注入阶段可以结合开发人员角度做一步初步的分析,比如登录注册,一般都可能存在sql注入漏洞,或者搜索等等一些功能。

然后就是寻找注入点,这一步是最关键的一步,我们要确定好哪一个地方是我们可以利用的,这一步我们可以做一下简单的闭合,比如输入引号或者括号,看运行结果。如果出现了非预期的回应,那么这个点很可能会被我们利用

然后就是构造payload,这一步需要我们有一定的开发基础,要先以开发人员角度去推测后端功能,然后再逆向推断,做进一步的分析。比如我们对一个登录功能进行注入,我们在不知道密码的情况下,在密码栏输入 1’ or 1 = 1 # ,那么这个sql语句执行的就是select * from user where password=‘1’ or 1 =1 # 被注释部分,显而易见这样的查询返回的必定是真,所以我们可以直接登录。

然后就是执行payload并且对结果进行分析了。在结果分析阶段也是要非常重要的,因为后边的报错注入和盲注是要看结果的。报错注入要看报错信息,根据报错信息一步一步调试payload直到成功攻击,盲注是要看人为控制的回显的。

5. UNION联合注入

使用union联合注入的条件是必须要有相似的数据类型(字段数相同)

步骤:

1.寻找注入点。寻找我们可以利用的

这里以pikachu为例,我们通过url里边的内容可以看到name是一个可以被利用的点

2.闭合。将sql语句中的单引号或者双引号或者括号进行闭合

我们尝试闭合:
在这里插入图片描述

可以看到输入单引号就可以完成闭合

3.获取列数(使用ordrr by或者group by分组)

获取列数可以使用order by或者group by来判断。这里我们输入order by 2,查看结果:

在这里插入图片描述

我们再次输入order by 3,查看结果:

在这里插入图片描述

所以得出结论,这个查询出的数据行有两列

4.判断显示位。

使用select* from xxx where name=‘asd’ union select 1,2 --+ 这类sql语句,查看1,2在哪里显示。注意,在判断的时候一定要让原来的查询结果不正常显示

在这里插入图片描述

现在我们就知道了两列数据显示的位置

5.获取所需信息。

当我们得知显示位置之后,可以把显示的1或者2替换成类似database()这类函数,比如我们现在要查看数据库名和用户:

在这里插入图片描述

这里列出一些常用函数:

user()  # 获取数据库用户
database()  # 获取当前数据库
@@version  # 获取数据库版本
session_user()  # 获取当前连接用户(在mysql5版本以下使用)

我们还可以查看information_schema数据库里边的表来查看整个mysql数据库的信息,比如我们要看pikachu数据库的所有表名:

在这里插入图片描述

这里我给出information_schema数据库中常用的表信息:

tables表:		# 存放所有数据库表的信息
	table_schema   # 表对应的数据库
	table_name		# 表名
columns表:		# 存放所有表的列的详细信息
	table_schema	# 同上
	table_name		# 同上
	column_name		# 列名

6.报错注入

步骤:

1,寻找注入点

这里用pikachu来做示范,首先寻找注入点:

在这里插入图片描述

查看url能看出name可以注入

2.闭合

尝试闭合:
在这里插入图片描述

可以看出想要闭合得用单引号

3.根据报错信息,使用报错函数制造报错

下面是使用floor函数制造报错:

在这里插入图片描述

所以我们可以看自己想看的内容了

4.根据报错信息分析得到数据
在这里插入图片描述

1) floor函数报错原理

条件:floor函数报错注入在mysql8的版本已经失效,所以mysql版本要小于8,并且数据条数一定要大于等于三条。

rand()函数:mysql的一个随机数函数,返回一个随机的浮点数,范围在0-1之间,如果指定一个种子参数比如rand(0),那么后续再次调用rand(0),出现的随机数不会变化。

floor函数:向下取整函数,返回的是传入数的向下取整整数

报错举例:

在这里插入图片描述

在这里插入图片描述

当我们使用group by对count(*)进行排序的时候,rand()函数会被调用两次。所以在进行分组排序的时候,实际过程是这样的:

首先会建立一个虚拟表,在这个虚拟表里边存放的是主键和计数。当group by查看表中是否有floor(rand(0)*2)的时候,rand就会被执行一次,此时第一次肯定是不存在,所以要将其插入,但是在插入的时候又会执行一次rand,两次rand结果不一样,所以举例来说名义上插入的是0,实际插入的是1。后边再次查询,还是有不一样的,那么又会重复上边的操作,这样举例的说就只能是名义上插入0实际插入1(因为上边实际插入的是1,0没有被插入进去,所以再次检索的时候0还是不存在),但是插入1的时候,1是已经插入过的,会产生碰撞,引发报错,此时报错信息会把引发碰撞的值显示出来。

利用:
在这里插入图片描述具体的注入原理大家可以自行搜索其他博主的了,floor函数报错一般用的不太多,这里我也就不多说了。

2)extractvalue函数报错

extractvalue(xml文件名,xml文件路径)是一个查询xml文档数据查询的xpath函数,查询路径必须是xxx/xxx/xxx这种格式,否则就会报错,所以我们可以利用这个报错信息来获取我们想要的信息。注意,这种报错信息最多返回32位数据。具体操作如下:

在这里插入图片描述

或者直接

在这里插入图片描述

在pikachu里边使用如下:

在这里插入图片描述

可以看到在报错信息中获取到了数据库名,在payload中的0x7e是~波浪号的16进制。

3)updatexml函数报错

updatexml函数和extractvalue函数类似,只不过extractvalue函数是用来查询xml的,而updatexml是可以修改xml的,所以updatexml函数有三个参数:updatexml(文档名,文档路径,修改值)

updatexml的用法和extractvalue的用法类似,只不过是多了一个参数。它也是最多返回32位数据。
在这里插入图片描述

或者跟上边一样直接:

在这里插入图片描述

都可以,只要保证这个函数被运行即可。

在pikachu中运用:

在这里插入图片描述

特别的,如果想要的数据超出了32位,我们可以使用substr函数来对数据进行切割,分段获取我们想要的数据,如下:

在这里插入图片描述

可以看到我们想要的数据没有完全显示出来,这时候我们就用substr进行切分,查看后边的内容(substr(截取内容,起始位置,截取长度)):
在这里插入图片描述

7.盲注

盲注,一般在没有任何返回数据的条件下使用,因为没有了回显数据,所以我们要通过一些其他的状态来判断正确与否,实际做的就是一个猜解的过程。

1)布尔盲注

布尔盲注就是我们在输入数据正确或者错误的情况下,客户端会有两种可以分辨的状态代表正确或者错误,配合我们的payload,可以做到猜解数据。

下面在sqlib里演示下如何获取数据库名:

在这里插入图片描述

在这里插入图片描述

像上边这样,有两种回显状态,就可以使用布尔盲注了。下面构造payload:

?id=1’ and substr((select database()),1,1)=‘s’ --+

其中substr可以替换成left函数或者mid函数,他们的功能都类似,具体使用看使用场景和个人喜好。

在这里插入图片描述

可以看到这是正确了,说明第一个字符是s,这样一个一个猜测比较麻烦,我们可以使用bp里边的爆破模块来进行爆破

在这里插入图片描述

首先抓到包发到攻击模块中,然后设置爆破点:

在这里插入图片描述

攻击模式就选狙击手模式,然后设置攻击字典:

在这里插入图片描述

bp自带一个字符集的字典,有字母和数字,我们如果要加入特殊符号可以在里边加入,然后设置每次爆破的字符长度,可以看到bp给我们算出来预计要攻击36次。然后我们发动攻击:
在这里插入图片描述

可以看到用s攻击的那个响应包的长度和其他的不一样,查看响应包得知这就是正确的第一个字符,然后我们可以这样修改攻击位置:

在这里插入图片描述

攻击结果:

在这里插入图片描述

这样我们可以方便的查看结果了

2)时间盲注

当没完全有结果回显时,我们就不好判断对错了,所以我们可以自己制造判断条件,比如如果正确就让他sleep几秒再响应,这就是时间盲注

下面使用sqlib来演示:

首先判断是否可以用sleep:

在这里插入图片描述

看到响应时间明显变长了,所以这个可以使用sleep函数来盲注

构造payload:

?id=1’ and if(substr((select database()),1,1)=‘s’,sleep(5),sleep(1)) --+

在这里插入图片描述有延迟就说明这里的盲注是正确的,我们可以进行下一个位置的盲注,直到完全出来。另外BP也是可以爆破的,回显结果的话就用响应时间筛选即可。

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

SQL注入步骤 1、寻找注入点 寻找url中存在?能够传递参数到后端的页面; 例如 news_detail.php?id=2 2、判断是否存在SQL漏洞 判断标准:就是前端输入恶意的SQL内容,能够带到后端数据库执行; 逻辑操作: select * from zeeker where id=2 and 1=1; 结果:可以查出数据 select * from zeeker where id=2 and 1=2; 结果:不可以查出数据 (判断闭合方式忽略) 3、判断当前查询的表有多少列 order by 列数,6报错,5不报 阅读详情

相关推荐

SQL注入和sql-labs通关1-18(手工注入、高权限注入、文件读写、提交方式、查询方式、WAF绕过、sqlmap)

对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。......

m0_61506558的博客 1424

SQL注入基础

各位靓仔们是否经常听到sql注入呢,那么什么是sql注入?引用微软官方的语言来说:SQL 注入是一种攻击方式,在这种攻击方式中,在字符串中插入恶意代码,然后将该字符串传递到 SQL Server 的实例以进行分析和执行。构成 SQL 语句的任何过程都应进行注入漏洞审阅,因为 SQL Server 将执行其接收到的所有语法有效的查询。一个有经验的、坚定的攻击者甚至可以操作参数化数据。那么接下来,让我们来了解一下sql注入是如何产生的。

屿的博客 5103

【天线与电波传播】电波传播部分 第7章 电波传播的基础知识3

菲涅尔区与菲涅尔带的基本知识

Chen59_2328的博客 1601

sql注入详细过程

mysql mysql5.0以上版本包含内置的information_schema数据库,它储存着mysql所有的数据库和表结构信息,利用该数据库可以查询到所有的数据库和表的内容 5.0 暴力破解的方式获取数据 1.原理 当我们的Web app在向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。 2.sql手工注入的基本思路 (1)找到注入点 在我们可控的输入部分加一些符号,查看页

qq_42890862的博客 6245

国外无人机蜂群作战典型战例及发展趋势

参与袭击的无人机为简易组装的固定翼飞机,采用小排量活塞发动机和手机GPS通信模块零件,机翼为轻木加泡沫板混合结构,尾梁为铝合金方管,主要依靠胶带粘接,以上全部配件均可在商用市场买到,成本较低,可在短时间内装配完成。③战场纵深短、瞬时性强。蜂群作战的参战数量显著增加,这一方面得益于无人机技术的飞速发展使得廉价无人机可以大量生产和仿制,另一方面凭借迅速发展的投放和回收技术以及集群控制技术,使得无人机蜂群可在极短时间内实现编队饱和攻击,在快速消耗敌方高价值防空武器系统的同时,保证己方物资系统的突防概率。

renhongxia1的博客 2481

合并数组与非合并数组——SystemVerilog

合并型数组(packed): — 合并型数组可以实现连续的存储,赋值时不需要用 '{ }。 //合并型数组 bit [3] [7:0] b_pack // 表示3行 x 8列的数组,[3]是高维度(高维度),[7:0]是低维度(第一维) 数组中,数据排列为{b_pack[3],b_pack[2],b_pack[1],b_pack[0]},其中每个b_pack为8个bit; bit是二值逻辑,每位bit只占据1位。故24位bit只占据一个word(一般一个word为32bit)的存储空间

SummerXRT的博客 7638

SQL 注入语句整理大全,零基础入门到精通,收藏这篇就够了

虽说目前互联网上已经有很多关于sql注入的神器了,但是在这个WAF横行的时代,手工注入往往在一些真实环境中会引起尤为重要。此处主要把以前学过的知识做个总结,不会有详细的知识解读,替代查询手册的形式,更多以后的复习与查阅,文中内容可能会存在错误,望师傅们斧正!0x01 Mysql手工注入。

m0_61869253的博客 1532

自动驾驶开发者必看:nuscenes数据集23类物体标注全解析(附避坑指南)

本文深入解析nuscenes数据集的23类物体标注系统,为自动驾驶开发者提供全面的标注规范解读和实战避坑指南。涵盖多模态数据组织、类别细分规则、属性系统应用技巧以及标注质量验证方法,帮助开发者高效利用这一标杆数据集提升模型性能。

weixin_29041767的博客 256

Pikachu靶场-SQL注入,零基础入门到精通,收藏这篇就够了

INSERT注入通过操纵插入的数据或执行额外操作危害数据库安全。

Javachichi的博客 1859

华为流程L1-L6业务流程深度细化到可执行【附全文阅读】

该文档主要介绍了华为业务流程的深度细化及相关内容,包括流程框架、建模方法、流程模块描述、流程图建模等,旨在帮助企业构建有效的流程体系,实现战略目标。

cdfunlove的博客 4003

Openclaw接入大模型API,操作本地windows文件

本文介绍了在WSL2环境下配置OpenClaw使用阿里百炼API的方法。主要内容包括:1)确认WSL2安装完成;2)配置阿里百炼API(需注意Qwen3-Max-Thinking为收费模型);3)提供正确的JSON配置格式示例,强调apiKey必须填写真实值;4)说明配置错误需修改Linux配置文件;5)建议通过询问模型信息验证连接成功。后续将介绍如何切换免费API及本地文件访问功能。

qq_27246521的博客 989

SQL 注入总结(非常详细)零基础入门到精通,收藏这篇就够了

1’ and (select 1 from(select count(*) from information_schema.columns where table_schema=database() group by concat(0x7e,(select password from users where username=‘用户名’),0x7e,floor(rand(0)*2)))a)#前面所注册的 admin ‘# 账号,在注册时,后端对其进行了转义,’# 被转义成了其他的东西,所以第一次注入无效。

Javachichi的博客 2020

如何利用Dpabi,AFNI,FSL软件计算种子点的功能连接?

fsl_glm 得到的是线性回归系数(beta coefficient),由于在自变量和因变量标准化(均值为 0,标准差为 1)的情况下,简单线性回归的回归系数和皮尔逊相关系数是相同的,因此这是一种间接的方法。(3)上一步得到的 PCC.nii.gz 文件是 Harvard-Oxford 概率模板中的后扣带回,每个体素中的数值(1-100)表示该体素属于 PCC 的概率,反映 PCC 在不同被试中的变异大小,也表示我们对于某个体素属于PCC 的信心。接下来,我们来聊聊功能连接在数据处理里的具体应用。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 7842

sql注入语句总结(非常详细)零基础入门到精通,收藏这篇就够了

很多情况下使用工具对mssql注入并不完善,所以我们就需要手工注入,一下是本人收集的一些mssql的sql语句.

leah126的博客 4055

X86/64架构中的总线 和 ARM架构中总线的理解

内部总线 /CPU总线/FSB前端总线:类似ARM架构中的AHB总线北桥? 直接和CPU连接,这条总线主要由CPU使用,用来与高速缓存、主存和北桥(或MCH)之间传送信息。 外部总线:类似ARM架构中的APB总线(外围总线)南桥?例如PCI总线、USB总线等 通过北桥与CPU连接(南桥?),是CPU与内存RAM、ROM和输入/输出设备接口之间进行通讯的通路 内存总线:内存与北桥间的总线称为内存总线 ...

a746742897的博客 1067

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SQL注入进阶,零基础入门到精通,收藏这篇就够了

承接上一篇SQL初级篇,进行SQL注入的进阶学习。欢迎伙伴们多多交流,多多补充哈~进阶篇主要聊了聊七种类型的注入方式,多练习练习,加深印象。还是那句话,大家有其他的也可以补充哈~黑客/网络安全学习包资料目录成长路线图&学习规划配套视频教程SRC&黑客文籍护网行动资料黑客必读书单面试题合集因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享1.成长路线图&学习规划要学习一门新的技术,作为新手一定要先学习成长路线图。

Python_0011的博客 837

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SQL 注入攻防入门详解,零基础入门到精通,收藏这篇就够了

在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。

Libra1313的博客 796

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

sql注入测试方法,零基础入门到精通,收藏这篇就够了

sql注入测试方法,零基础入门到精通,收藏这篇就够了

weixin_57514792的博客 1300

SQL 注入 五大基本手法,零基础入门到精通,收藏这篇就够了

phpstudy 的数据库交互太慢,改用 xampp,但 xampp 中无数据库 ‘cms’ ,需要将 phpstudy 中的 cms 数据库导入 xampp 中的数据库(phpstudy 和 xampp 使用的不是同一个数据库)由于网络问题等原因,若超时时间太短可能造成爆破不准确,但超时时间设置过长会导致爆破时间成本上升,为提升准确性 ,爆破时间稍长 ,不报错则耐心等待。在注入点的判断过程中,发现数据库中 SQL 语句的报错信息,会显示在页面中,因此可以利用报错信息进行注入。

Libra1313的博客 1201

什么是SQL 注入?SQL 注入及防范措施(非常详细)零基础入门到精通,收藏这篇就够了

SQL 注入是一种常见的 Web 安全漏洞,它发生在应用程序与数据库交互的过程中。当应用程序没有对用户输入的数据进行充分的验证和过滤,攻击者就可以通过构造恶意的输入数据,将 SQL 语句插入到应用程序提交给数据库的查询中,从而改变查询的逻辑,获取敏感信息、篡改数据或者执行其他恶意操作。如果用户输入的用户名是admin,密码是123456,那么这个查询会正常执行,验证用户的登录信息。但是,如果攻击者输入用户名是admin' --在这个例子中,--

Libra1313的博客 3135

【2025版】最新什么是 SQL 注入以及如何防止 SQL 注入?(非常详细)从零基础入门到精通,收藏这篇就够了

为了防止 SQL 注入攻击,开发人员应实施适当的输入验证和过滤技术,使用参数化查询或预准备语句,并使用 Web 应用程序防火墙和入侵检测系统来检测和阻止恶意 SQL 注入尝试。SQL 注入是一种针对 Web 应用程序和数据库中的安全漏洞的网络攻击。我们了解到,SQL注入是将恶意代码注入数据库查询的行为,这可能导致数据被盗,网站篡改,甚至完全系统泄露。攻击者可以在用户名字段中输入类似 ’ OR ‘1’='1 的内容,导致 SQL 查询为所有用户返回 true,并允许攻击者在没有有效密码的情况下登录。

leah126的博客 1782

SQL注入漏洞SQL注入高级篇,零基础入门到精通,收藏这篇就够了

这里的500001表示的是如果数据库的版本是5.00.01以上的版本 这个语句才会被执行 (已经没有5.00.01以上的版本了 所以一定会执行)id=1000000000’ union select 1,2,3 or ‘1’='1 //union select也被屏蔽了。//用from for语句替代逗号。id=1’ order by 3 %26%26 '1 //or被屏蔽 且or大小写绕过失败 双写嵌套绕过成功。//当可以注册用户的时候,我们思考一下能不能通过修改自己的密码去修改别人的密码。

Python_0011的博客 319

【黑客渗透测试零基础入门必知必会】之初识SQL注入,从零基础到精通,收藏这篇就够了!

id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。SQL Cookie注入原理主要涉及到攻击者利用Web应用程序对Cookie处理不当的漏洞,通过修改或伪造Cookie中的值,将恶意的SQL代码注入到应用程序的数据库查询中,从而执行非授权的操作或获取未经授权的数据。主要源于应用程序对用户输入的字符型数据没有进行严格的过滤和验证。

Python_0011的博客 1018
上一篇: 车载以太网通讯测试(深度解锁),零基础入门到精通,收藏这篇就够了
下一篇: SQL注入进阶,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值