基于报错的注入,是指通过构造特定的SQL语句,让攻击者想要查询的信息(如数据库名、版本号、用户名等)通过页面的错误提示回显出来。
报错注入一般需要具备两个前提条件:(1)Web应用程序未关闭数据库报错函数,对于一些SQL语句的错误直接回显在页面上;(2)后台未对一些具有报错功能的函数进行过滤。
常用的报错功能函数包括extractvalue()、 updatexml)、floor()、exp()等。
关于floor()函数,在进行报错注入时,floor()函数一般需要与rand()、count()、group by 联用。作用:floor(x):对参数x向下取整;rand():生成一个0~1之间的随机浮点数;count(*):统计某个表下总共有多少条记录;group by x:按照(by)一定的规则(x)进行分组;报错原理: floor()函数与group by、rand()联用时,如果临时表中没有该主键,则在插入前会再计算一次rand(),然后再由group by将计算出来的主键直接插入到临时表格中,导致主键重复报错,错误信息如: Duplicate entry ' ..' forkey'group_key'。
1.访问SQLi-Labs 网站在攻击机 Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs 上的SQLi-Labs 网站Less-1。访问的URL为:http://[靶机IP]/sqli-labs/ Less-1/