我们打开环境,很简单的一个页面,这emmm

大家肯定首先想到了SQL注入,那么其实呢,这道题吧……
没错它就是SQL注入(逃
然后我们输入1,2之类的,发现页面正常回显
在这里我们先不fuzz模糊测试了,对,你还要打开burp,还要加载字典😵(懒)
我们就直接淦吧!!!
对了,插句话,之前一段时间专注于sql注入的学习,然后本博主做了一系列的教学和刷题视频放到了哔哩哔哩上,有mysql的一些知识和极客大挑战中所有的sql注入赛题,哔哩哔哩搜索”yuyu-宇“,带给你不一样的快乐♂
好,言归正传,我们开始验证下是否是sql注入,输入

1' #

页面能够正常回显,那就没跑了
下面order by干一干

2不报错,3就报错了,好,那么select语句里面应该有两个字段
联合查询下康康~

mmp过滤了那么多玩意我还怎么玩,溜了溜了
好,这个时候既然过滤了select,貌似不可能注入了,不过,等等,愚蠢的开发者的第一个失误,没有过滤分号!(ohhhhh)
堆叠注入来一波试试!

1';show databases; #


very good!
我们继续搞一搞

1' show tables; #


可以看到后端默认查询的数据库有俩表,接下来要用到那么一丢丢小技巧了

如何用show语句查列嘞?
show columns from 表

所以我们查查这俩表里面都有什么好康的(逐渐猥琐)
先看看那个数字命名的表吧,注意哈,如果表名是数字要加上反引号

';show columns from `1919810931114514`; # 


可以看到我们想要的flag字段就在这个表里面,这时候,彷佛我们已经看到了胜利的曙光
OK,我们在看看”words“表里面有啥

';show columns from words; #


诶,这个是不是看起来有那么一丢丢熟悉的亚子,没错了,我们一开始查询的时候呢,就是输入id查数据,应该就是在这个表里面查的,现在问题来了,我们想要flag,但是,select又被防火墙干掉了,彷佛是一个无解的题目,但是,本文最精彩最精彩最精彩的地方来了
笔者见过常规的绕过防火墙保护的姿势,但是看到这个姿势,我当时真的眼前一亮,学到了学到了,果然,做渗透的师傅们的脑洞都很大emm
用alter和rename把"flag"字段所在的表命名为'words',给它改成"data",再把原本的"id"改成别的名字,这样,因为数据库查的是"id",它可不管"id"里面是啥,他就只认识"id"这个名字,所以我们就理所应当的拿到了flag
最终的攻击语句

';alter table words rename 小张到此一游;alter table `1919810931114514` rename words;
alter table words change flag id varchar(100);#

注意,最后一条语句中的words其实是我们的那个flag所在的表,它的名字已经被我们改成words了
然后我们来用万能密码爆flag就可以啦~
' or 1=1 #

至此,我们已经拿到这个题目的flag了,然后再让我们来康康表名有没有被改(滑稽)

很好,如果是真实环境,不知道网站的数据库管理人员看到“小张到此一游”的表情该有多么精彩👻
所以,开发的时候一定要兼顾安全!!尤其是涉及到数据库的安全
我们回到攻击语句那里,甚至可以改下原来的words字段名字,改成 "小张 is my hero"
大家有问题可以在哔哩哔哩私信我哟