目录
(四)第十八关到第二十二关
(1)第十八关
首先我们打开 less-18 目录下的 php文档,在sql 注入语句下面加入两行代码
便于我们学习。
然后打开 sqli-labs ,注意到less-18 的标题为 Post Header Injection(头注入)
进入,输入admin admin登录,返回以下界面
这里回显出自己的IP地址,User-Agent,和自己的浏览器的一些信息。
如果这里没登录成功可能是因为之前重置密码那关改掉了密码 ,可以在MySQL命令行中验证。
方法一:可以去less-17重新输入一个你自己知道的重置掉目前的密码。
方法二:在sqli-labs主界面最上方有一个reset Database for labs重置数据库即可。
这里我们随便输入一个错误账号密码,得到的回显中没有 User-Agent,但是有IP地址,所以可以在User-Agent 上注入。
这里我们需要先下载一个chrome插件(我这里用的是chrome浏览器,Firefox也有这个插件)
大家可以在这里下载:ModHeader - Crx4Chrome插件下载
下载后将里面的所有文件解压到一个空文件夹中,打开chrome浏览器,输入:chrome://extensions/ 打开扩展程序,点击右上角的开发者模式,点击左上角 加载已解压的扩展程序,选择我们之前解压的那个文件夹,打开即可。
我们可以打开源代码,
$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
从后面的values值可以看出,insert值是由user-agent、ip_address、username组合而成的,根据十七关的知识我们可以使用 updatexml 报错注入来获取信息。
' or updatexml(1,concat(0x7e,(database())),1),'','')#
通过修改user-agent为上面这行代码可以看到当前数据库的名字,其中后面那两个 ‘’,是因为将后面的语句闭合,也可以使用下面这句话
' or updatexml(1,concat(0x7e,(database())),1) or '1'='1
刷新一下就可以看到页面中出现了回显,并且为数据库名。后面的操作就和第十七关一样了。
(2)第十九关
这关和上一关差不多,只是变成了referer注入
' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1),'')#
前面' 是闭合前面自带的 ' ,后面的'')# 是为了闭合后面的语句,接下来就是更改select语句了,和十七关类似。
(3)第二十关
首先输入admin admin ,进入后发现页面回显出一大堆内容
可以看到这里有 user-agent,ip_address,cookie等信息,相较之前几关我们可以发现多了一个cookie的东西,这个词翻译过来就是饼干的意思, 这里简单地解释一下,我们在用自己的账号密码登录一个网站后,它将我们的这些信息进行加密储存,用来辨别我们的信息,如果我们选择保存的话,那么在下次登录的时候,浏览器可以根据上次的cookie来替换未输入账号密码的cookie,相当于你输入了账号密码,也就可以登录账户了。所有如果我们拿到了别人的cookie,就可以实现在不知道对方账号密码的情况下登录他人账号。(cookie有的是永久保存的,而有的过一段时间就会刷新)
这里是通过cookie注入来实现的,打开我们之前下载的ModHeader插件,选择cookie,来进行注入
uname=n' union select 1,2, schema_name from information_schema.schemata limit 0,1 #
以上就是注入语句了,可以发现是联合注入这里的 ' 是为了闭合前面的语句,多试几次就可以得到了之后的就是替换 后面的sql注入语句了。
如果之前没有下载ModHeader的朋友可以 按 f12,点击console,在console 控制台里面输入
document.cookie="uname=n' union select 1,2, schema_name from information_schema.schemata limit 0,1 #"
回车后也可以修改cookie参数,刷新一下同样可以得到相同的结果,但是前两关的user-agent和referer不能在里面直接更改,如果有知道的朋友还望指点一二。
(4)第二十一关
我们打开less-21,对了,在不用ModHeader和SwitchOmega的朋友请及时关闭,否则可能导致加载不出来其他页面,我就是忘关了搞得半天进不去less-21(笑)。
输入 admin admin
发现和二十关差不多的回显,但是发现这里面有一个 YWRtaW4=(有的朋友可能是 YWRtaW4%3D,这里%3D就是=),这是什么意思呢,我们打开base64转码器,解码
发现解码后就是admin,说明只不过是将uname的值进行了base64的编码罢了,所以我们只要将要注入的语句换成base64编码型即可,
bicpIHVuaW9uIHNlbGVjdCAxLDIsZGF0YWJhc2UoKSM=
编码后为上面这行,打开 ModHeader 注入上列语句
uname=bicpIHVuaW9uIHNlbGVjdCAxLDIsZGF0YWJhc2UoKSM=
刷新,得到数据库名称
之后就是替换语句的操作了。
(5)第二十二关
这一关就是把二十一关的单引号换成双引号,其他一模一样
有兴趣的朋友可以看一下这个专栏的其他文章,会继续更新的
注意:我的这份笔记只是入门相关的操作,不能保证你能够掌握SQL注入,因为在实际过程中会有各种各样的情况,所以想要深入的话请坚持学习下去,多实战,在这个sqli-labs笔记结束后我应该会继续发一些关于这方面的技术分享,大家一起学习进步!!