• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

pikachu:SQL注入

武飞扬头像
MS02423
帮助3

一. pikachu介绍

1.1 简介

Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。

1.2 pikachu模块

  • Burt Force(暴力破解漏洞)
  • XSS(跨站脚本漏洞)
  • CSRF(跨站请求伪造)
  • SQL-Inject(SQL注入漏洞)
  • RCE(远程命令/代码执行)
  • Files Inclusion(文件包含漏洞)
  • Unsafe file downloads(不安全的文件下载)
  • Unsafe file uploads(不安全的文件上传)
  • Over Permisson(越权漏洞)
  • ../../../(目录遍历)
  • I can see your ABC(敏感信息泄露)
  • PHP反序列化漏洞
  • XXE(XML External Entity attack)
  • 不安全的URL重定向
  • SSRF(Server-Side Request Forgery)

二. pikachu的搭建

2.1 phpstudy的搭建

phpstudy下载地址小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)

学新通

下载完后双击压缩包中的应用程序

学新通

选择路径,这里我存储在D盘中

学新通

然后就安装成功了

 学新通

2.2 pikachu的搭建

pikachu的下载地址:https://github.com/zhuifengshaonianhanlu/pikachu

学新通

将其解压到PHPstudy路径下的PHPTutorial下的WWW目录下

学新通 在../www/pikachu-master/inc下,修改config.inc.php文件,如图: 

学新通 然后在浏览器中访问http://127.0.0.1/pikachu-master(因为我的之前已经安装成功了,所以没有出现初始化安装)

学新通

三.SQL注入漏洞

3.1 SQL注入原理

     就是通过把恶意的sql命令插入web表单递交给服务器,或者输入域名或页面请求的查询字符串递交到服务器,达到欺骗服务器,让服务器执行这些恶意的sql命令,从而让攻击者,可以绕过一些机制,达到直接访问数据库的一种攻击手段。

3.2 SQL注入分类

(1)数字型        (2)字符型       (3)报错注入     (4)Boollean注入                (5)时间注入

3.3 SQL注入思路

(1).判断是否存在注入,注入是字符型还是数字型

(2).猜解SQL查询语句中的字段数

(3).确定回显位置

(4).获取当前数据库

(5).获取数据库中的表

(6).获取表中的字段名

(7).得到数据

3.4 SQL注入绕过方法

(1)注释符号绕过         (2)大小写绕过         (3)内联注释绕过

(4)特殊编码绕过         (5)空格过滤绕过       (6)过滤or and xor not 绕过

四.SQL注入漏洞的分析

4.1 定义

     SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

4.2 原因

    SQL 注入漏洞存在的原因,就是拼接SQL参数。也就是将用于输入的查询参数,直接拼接在SQL语句中,导致了SQL注入漏洞。web 开发人员无法保证所有的输入都已经过滤,攻击者利用发送给服务器的输入参数构造可执行的 SQL 代码(可加入到 get 请求、 post 谓求、 http 头信思、 cookie 中)。

五.SQL-Inject

5.1 数字型注入(post)

(1)判断注入类型,是数字型注入,还是字符型注入

学新通

我们可以看到是post请求,所以我们使用bp进行抓包,在burp里面进行

学新通

我们发送到重发器里面进行做,我们输入1可以看到返回给一个正常页面

学新通 我们输入1',可以看到报错了

学新通

我们继续输入1' and '1'='1,可以看到还是报错了,我们猜测是数字型注入

学新通 我们输入1and 1=1没有报错,1 and1=2报错了,所以类型是数字型注入(而且题目要告诉我们是数字型注入了,之所以这样做就是为了如何进行判断SQL注入类型)

学新通

学新通 

(2)判断字段数                                     order by 

我们使用order by 进行判断字段数, 至到order by 进行报错时候就是字段数

id=1 order by 1没有报错

学新通

 id=1 order by 2没有报错,3报错了,所以字段数为2个

学新通

学新通 (3)判断回显位置                       union select 1,2

学新通

(4)判断数据库                                     union select 1,database()

学新通 (5)获取表名          1 union select 1,group_concat(table_name) from information_schema.tables where tables_schema=database() 

学新通

 (6)获取字段名                  1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'

学新通

(7)获取数据    1 union select user,password from users

学新通

5.2 字符型注入(get) 

 (1)判断类型,我们在上面已经讲过了如何进行判断SQL注入类型,所以这里我们就不讲了,直接进行做题(注意:这里需要万能密码才能做)

学新通

我们输入1'可以看到报错了

学新通我们输入1' and '1'='1,可以看到不存在学新通 这里我们使用万能密码(1' or 1=1#),可以看到所有的数据,后面就不用做了

学新通

 (2)后面步骤和前面一样,这里就不在写了,vince' order by 1#

学新通

学新通

后面的我们都可以使用sqlmap进行注入,所以后面的就在这里不讲解了。后面我会更新自己挖掘的漏洞.

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiaajj
系列文章
更多 icon
同类精品
更多 icon
继续加载