Less 38 ~ 41 虽然使用 Less 1 的方式注入即可注入成功,但是这 4 关存在堆叠注入漏洞。我们可以使用 “;” 闭合第一个 SQL 语句,然后在后面执行任意的 SQL 语句,通过这个漏洞我们可以对数据库执行任意的操作。
less38
堆叠注入
此处使用 Less 1 的 payload 就可以完成注入,此处用于测试堆叠注入。所谓堆叠注入就是在原语句后加上分号,从而闭合前面的内容作为第一条 SQL 语句。然后在后面输入第二条的数据库操作语句,在条件允许可以被后端带入数据库执行。堆叠注入使用的范围非常有限,例如后端可能会限制 SQL 只执行一条语句。一旦这种漏洞存在,对数据库的破坏性是毁灭性的,因为这表示攻击者可以肆意对数据库进行操作。
堆叠注入攻击
堆叠查询注入攻击可以执行多条语句,多语句之间以分号隔开。堆叠查询注入就是利用这个特点,在第二个SQL语句中构造自己的要执行的语句
新建一个表select * from users;create table A like users;
删除创建的A表select * from users;drop table test;
查询数据select * from users;select B,C,D;
加载文件select * from users;select load_file('/etc/passwd');
增加一条数据select * from users;insert into users values(18,'zhong','zhong');
查看源码发现源码使用了 mysqli_multi_query() 函数,该函数可以执行多个 MySQL 语句。之前的 Less 使用的是 mysql_query() 函数,该函数只执行一条 MySQL 查询。
less39
和less38一样,不过是数值型注入。
less40
也是堆叠注入不过是单引号和括号型。
less41
和39差不多也是堆叠注入的数值型。