第16关使用POST请求提交参数,可以使用代理工具抓包或直接在输入框中修改参数
后端代码根据用户输入账号和密码去数据库中查询,查询成功则返回登录成功,否则返回登录失败,页面没有显示的数据,SQL语句中使用了错误抑制符@来限制数据库的报错信息,因此不能使用联合注入或报错注入,推荐使用布尔盲注,源码如下
用户名输入万能账号 1") or true # , 密码随便输入,使SQL恒成立,可以登录成功,由此判断注入点为双引号+括号的字符型注入
接下来验证数据库长度,显示登录成功则表示条件成立,比如下面的payload就表示数据库长度大于1
1") or length(database())>1 #
而后以此增加长度,显示登录失败则表示条件不成立,比如下面的payload就表示数据库长度不大于8
1") or length(database())>8 #
而后按照此公式猜库名,表名