SQL报错注入是Web安全中的一种常见漏洞,攻击者通过构造特殊SQL语句,让错误信息在页面中回显,获取敏感信息。实现报错注入需要Web应用未关闭数据库报错功能和后台未过滤特定函数。MySQL中如extractvalue( )、updatexml( )这类Xpath函数能利用特定格式错误显示攻击者希望查询的信息。另一个复杂函数floor( )也...
深信服技术认证之基于floor 函数的SQL报错注入
SQL报错注入是Web安全中的一种常见漏洞,攻击者通过构造特殊SQL语句,让错误信息在页面中回显,获取敏感信息。实现报错注入需要Web应用未关闭数据库报错功能和后台未过滤特定函数。MySQL中如extractvalue( )、updatexml( )这类Xpath函数能利用特定格式错误显示攻击者希望查询的信息。另一个复杂函数floor( )也用于报错注入,与rand( )、count(*)、group by配合。floor( )函数对参数向下取整,rand( )生成随机数,count(*)统计记录,group by分组。利用这些函数构造报错语句,如`select count(*),(floor(rand(0)*2))x from information_schema.schemata group by x;`。当数据库生成虚拟表并执行group by时,由于floor(rand(0)*2)的随机性,不同计算结果会导致不同的虚拟表结构,进而引发主键冗余错误,实现报错注入。实际应用中,通过构造特定payload,可逐步获取数据库名、表名、字段名及字段值,如在SQLi-Labs的Less-5任务中,通过调整payload中的参数N,可以实现对数据库和表信息的爆破。2024-10-27