暑期练习web21:sqli lab闯关赛1-4关

经学长推荐准备刷一刷sqli lab这个闯关赛,提高一波

第一关 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

暑期练习web21:sqli lab闯关赛1-4关_第1张图片
首先我们输入?id=1‘测试一下,于是就提示这里是有漏洞的,而且是一个字符型注入,最后面的limit 0,1要注意了,每次只显示一行
暑期练习web21:sqli lab闯关赛1-4关_第2张图片
接着用order by测试字段数,直到3还是正常的,所以有三个字段
暑期练习web21:sqli lab闯关赛1-4关_第3张图片
因为这里是limit 0,1 所以如果我们前面写的是1’就会查出东西来,那样我们后边union select查的东西就显示不出来了,然后这里看到,它会把联合查询的第二和第三部分显示出来
接下来是利用联合查询查库名。查到当前库名是security
暑期练习web21:sqli lab闯关赛1-4关_第4张图片
接着查表名
这里就要注意了,因为它一次只回显一个,而一般表名肯定不止一个,所以我们需要利用limit一个一个显示出来,直到没有回显为止
第一个表:email
暑期练习web21:sqli lab闯关赛1-4关_第5张图片
第二个表:referers
暑期练习web21:sqli lab闯关赛1-4关_第6张图片
第三个表:uagents
暑期练习web21:sqli lab闯关赛1-4关_第7张图片
第四个表:users,而一般用户名和密码都放在这个表中
暑期练习web21:sqli lab闯关赛1-4关_第8张图片
所以我们继续在users中检索列名:
user_id
暑期练习web21:sqli lab闯关赛1-4关_第9张图片
username
暑期练习web21:sqli lab闯关赛1-4关_第10张图片

password
暑期练习web21:sqli lab闯关赛1-4关_第11张图片
我们想要的显然就是user和password
最后直接查找里面的内容即可,还是用limit一个个列举即可
暑期练习web21:sqli lab闯关赛1-4关_第12张图片

第二关 GET - Error based - Intiger based (基于错误的GET整型注入)

第二关开始依旧是先看注入类型,输入1‘报错,后面加上注释仍报错,所以初步推测不是字符型注入,就是数字型注入(即没有单引号把id括起来)
验证后,确实如此
暑期练习web21:sqli lab闯关赛1-4关_第13张图片
除了这个地方和第一关并无太大区别,依旧是自带limit0,1
所以想获取全部的表名和列名依旧是一个个枚举。。。
暑期练习web21:sqli lab闯关赛1-4关_第14张图片

第三关 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)

我们还是先拿1’试一试,发现这次报错有些特殊:后面多了个括号)
暑期练习web21:sqli lab闯关赛1-4关_第15张图片
这说明这题的形式是id=(‘xxx’),所以我们不仅要考虑闭合单引号,还得考虑闭合括号
暑期练习web21:sqli lab闯关赛1-4关_第16张图片

第四关 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)

还是照样试试
暑期练习web21:sqli lab闯关赛1-4关_第17张图片
直接上单引号,发现没有报错,这是为什么呢,因为php中双引号可以包含单引号
所以我们在判断注入时,要加入双引号进行判断哦,而且从下图可看到右括号,那么我们要用右括号闭合左括号
在综合上一个题,payload就是:
暑期练习web21:sqli lab闯关赛1-4关_第18张图片

你可能感兴趣的:(ctf,web,sql)