这里因为实验的时候只记录了一部分所以就展示一部分

1.1.1数字型注入

(1)看到界面发现是查询id功能,没有在url里看到有传参所以应该是post方法提交数据。

(2)进行sql注入之前我们最好是先想像一下这个功能提交的参数到了后台之后后台是怎样的操作的,对于当前的页面我猜测后台是这样操作

现接受我的id请求然后带入到查询语句

$id=$_POST['id']

select 字段1,字段2 from 表名 where id = $id

可以用下面的语句添加在等号后面来测试是否真确(post请求通过抓包的方式来进行测试)

1 or 1=1;

可以看到返回的是200

然后查看返回的结果可以看到把所有的结果都查询出来了。所以有漏洞并且是数字型的

1.1.2 字符型注入

查看页面发现是get请求

(1)首先也是猜想后台进行的操作,因为是查询名字,先将我们查询的数值赋给一个变量

$uname=$_GET['username']

select 字段1,字段2 from 表名 where username='$uname ' or 1=1#';

or = 1=1#验证漏洞是否存在,#号注释闭合‘’

测试结果

1.1.3 搜索型以及xx型注入

(1)搜索型

看到界面是用户名查找我首先还是进行猜测后台的操作,猜测后台可能使用的是mysql的搜索功能,mysql查询语句

Select * from member where username like ’$$’;

对于我们渗透者来时要进行一个闭合构造

Payload:xxxx%' or 1=1 #

测试结果

(2)xx型

查看页面发现与搜索型类似,但是测试发现拼接闭合的语句不同,查看源码发现是括号闭合,所以可以得到payload的类型是多种多样的。

原理方法与搜索型类似,所以构造payload

xx') or 1=1 #

但实际渗透测试过程中不可能得到目标网站的源码,这时候就需要根据经验和多测试。比如发现一个输入框,就首先进行单双引号测试

aaa” or 1=1# 或者 aaa’or 1=1#等等等。

主要是通过输入来看返回,来看我们的输入有没有参与到数据库后台的运算里面.

1.1.4”insert/updata”注入

(1)insert

看到界面发现是注册猜测后台数据库操作应该是insert命令,我们点击注册,我们先进行单引号测试

提交发现出现错误意味着提交的语法在后台参与了操作。

然后我们得知道mysqlinsert语句的用法

Insert into member(username,pw,sex,phonenum,email,address)values(‘xxxxxxxx’11111,1,2,3,4);

要构造闭合首先在我们可以输入的部分就是‘xxxx’里插入报错函数

Updatexml()

kobe' and updatexml(1,version(),0)#

updataxml(是mysql对xml文档函数进行出巡和修改的Xpath函数)

函数有三个参数第一个数指定xml文档表的字段名称,第二个是指定要替换的位置,第三个是新的值,但这三个值都是错误的。

第一个是不存在的,最后一个0因为前面的是不存在的所以替换也是没有意义的。关键是中间的数值,中间的数值也可以用表达式的形式,函数会把这个表达式执行了然后以报错的形式返回出来。

测试

发现没有返回完整的版本号信息,这里因为我们没有进行处理。

这里我们对函数进行处理加入concat函数意思是将传进去的参数组合成一个字符串打印出来,concat也可以执行表达式也就是将 0x7e和version()结果组合成一个字符串打印出来

kobe' and updatexml(1,concat(0x7e,version()),0)#

kobe' and updatexml(1,concat(0x7e,database()),0)#

0x7e是~号的十六进制

测试:

xiaohong' or updatexml(1,concat(0x7e,database()),0) or '

发现成功返回报错打印数据库名称

(2)update

首先登陆之后发现可以修改个人信息

Update语法与insert差不多我们将之前的palyload输入

xiaohong' or updatexml(1,concat(0x7e,database()),0) or '

提交测试:

发现一样可以返回报错

1.1.5”delete”注入

首先看到界面有请求和删除功能我们点击删除,之后再burp上查看

猜测因为对于后台来说其实就是获取了id,然后进行删除操作,所以我们就对id进行操作,还是使用之前的updatexml函数构造payload

1 or updatexml(1,concat(0x7e,database()),0)

将payload带入burp里面,因为参数是url类型进行提交的所以要进行URL编码

可以看到空格都变成了+号

最后看返回

成功报错。

1.1.6盲注(基于时间)

Base time注入输入单引号不会返回报错,一般方法也不会返回报错,

这时候我们猜测是否为base time 的注入

先打开控制台f12选择网络

然后输入payload:kobe' and sleep(5)#

发现执行了我们的语句延迟五秒,证明存在base time的注入

然后就可以构造我们的payload

kobe' and if((substr(database(),1,1))='a',sleep(5),null)#

通过一个if语句让数据库名称的第一个字符与a进行比较,如果一样就会暂停五秒,如果不等于就为假不暂停。

然后就慢慢进行尝试

1.1.7盲注(基于boolean)

1.基于boolean的与基于time的一样,用之前的方法都不会返回报错。

2.不管是输入正确,还是输入错误,都只显示两种情况(可以认为是0或者1)

3.在输入正确的情况下,输入and1=1/and1=2发现可以判断

测试,通过输入正确的名字加上我们的语句and 1=1#发现,也成功返回信息。

然后输入kobe' and 1=2#,发现有报错,判定是存在sql注入的,但是前端返回信息特别少。用我之前的报错函数payload输入也不能获得报错。怎么办呢。

办法总比困难多

这里我们使用一个这里substr函数,先了解什么是substr函数

Select substr(database(),1,1);

意思是使用取出数据库名称的第一个字符一次取出一个。

那我们如何知道要猜的名称长度,这里再用一个函数,length获得长度,但是基于boolean函数的只能返回真假所以

Length(database())>8,通过这种方式来猜,

(1)测试payload

kobe' and ascii(substr(database(),1,1))>113#

前面为真如果and后面也为真就会返回kobe的信息,根据真假来判断我们的猜测

先去猜测数据库第一个字符的ascii码大于113

返回为假

再次猜测

kobe' and ascii(substr(database(),1,1))=112#

返回为真。

现在进行进一步构造payload

将database()替换为查找数据库里第一个表的表名,之后再去一个个判断字符

kobe' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))<112#

返回为真,说明数据库第一个表的表名的第一个字符的ASCII码小于112,然后以此类推就可以猜到完整的。

手工盲注效率还是很慢,所以我们只需要搞懂原理,在实际测试的过程中还是需要自动化的工具,例如sqlmap之类的,由于之前测试的时候没有记录,这里就不演示了。

pikachu漏洞练习之sql注入的更多相关文章

  1. 漏洞重温之sql注入(五)

    漏洞重温之sql注入(五) sqli-labs通关之旅 填坑来了! Less-17 首先,17关,我们先查看一下页面,发现网页正中间是一个登录框. 显然,该关卡的注入应该为post型. 直接查看源码. ...

  2. 漏洞重温之sql注入(六)

    漏洞重温之sql注入(六) sqli-labs通关之旅 Less-26 进入第26关,首先我们可以从网页的提示看出本关是get型注入. 我们给页面添加上id参数后直接去查看源码. 需要关注的东西我已经 ...

  3. 漏洞重温之sql注入(七)

    漏洞重温之sql注入(七) sqli-labs通关之旅 Less-31 首先,进入31关,我们先添加上id参数. 然后,我们查看源码. 我们门可以看到,index页面源码其实很简单,网页也没有对我们的 ...

  4. DVWA漏洞演练平台 - SQL注入

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...

  5. 【漏洞汇总】SQL 注入漏洞之 mysql

    日期:2019-07-23 19:55:59 更新:2019-08-02 10:40:37 作者:Bay0net 介绍:Mysql 注入笔记 0x01. 基本信息 1.1 基本术语 数据库: 数据库是 ...

  6. Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。

    Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...

  7. WordPress WP-Realty插件‘listing_id’参数SQL注入漏洞

    漏洞名称: WordPress WP-Realty插件‘listing_id’参数SQL注入漏洞 CNNVD编号: CNNVD-201310-499 发布时间: 2013-10-23 更新时间: 20 ...

  8. WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞

    漏洞名称: WordPress NOSpam PTI插件‘comment_post_ID’参数SQL注入漏洞 CNNVD编号: CNNVD-201309-388 发布时间: 2013-09-24 更新 ...

  9. 关于sql注入漏洞的挖掘及渗透工具简介

    大量的现代企业采用Web应用程序与其客户无缝地连接到一起,但由于不正确的编码,造成了许多安全问题.Web应用程序中的漏洞可使黑客获取对敏感信息(如个人数据.登录信息等)的直接访问. Web应用程序准许 ...

随机推荐

  1. 2019-9-24-dotnet-remoting-抛出异常

    title author date CreateTime categories dotnet remoting 抛出异常 lindexi 2019-09-24 15:39:50 +0800 2018- ...

  2. 深入Oracle的left join中on和where的区别详解

    -- from http://blog.itpub.net/30175262/viewspace-1472060/ 今天遇到一个求某月所有天数的统计结果,如果某日的结果是0也需要显示出来,即: 日期 ...

  3. C语言中的优先级和类型转换分析

    一.优先级 1.易错的优先级 二.类型转换 在C语言中,存在强制类型装换,也存在隐式类型转换,隐式类型转换实际上属于强制类型转换,隐式类型转换要点如图. (1)举例:算术运算式中,低类型转换为高类型 ...

  4. 0011 开发者工具(chrome)

    此工具是我们的必备工具,以后代码出了问题 我们首先第一反应就是: "按F12"或者是 "shift+ctrl+i" 打开 开发者工具. 菜单: 右击网页空白出- ...

  5. 从0开发3D引擎(一):开篇

    介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.最小功能集合(MVP)" 的3D引擎. 本系列的素材来自我们的产品 ...

  6. 十三、springboot 优雅集成spring-boot-admin 实现程序监控

    前言 我们知道项目的监控是尤为重要的,但是我们如果用jdk 自带的jconsole 和jvisualvm 的话会非常繁琐,且界面不是很友好.之前我们使用了spring boot 项目,但是都没有对项目 ...

  7. 洛谷$P2598\ [ZJOI2009]$狼和羊的故事 网络流

    正解:网络流 解题报告: 传送门! 昂显然考虑最小割鸭$QwQ$,就考虑说每个土地要么属于羊要么属于狼,然后如果一条边上是栅栏一定是相邻两边所属不同. 所以考虑给所有羊向$S$连$inf$,所有狼向$ ...

  8. 我终于懂得如何使用matplotlib进行画图

    一 前言 本篇文章带大家快速入门如何使用matplotlib画出精美数学的图片:看完本篇文章你将获得熟悉并简单使用matplotlib工具,会画基本得折现图,散点图,sin,cos图,一张画布画出多图 ...

  9. (openssh、telnet、vsftpd、nfs、rsync、inotify、samba)

    (openssh.telnet.vsftpd.nfs.rsync.inotify.samba) 一:OpenSSH服务与Telnet服务(必须掌握) 前言:OpenSSH是加密传输,Telnet是明文 ...

  10. vue 2.0以上怎么在手机中运行自己的项目

    第一步 打开vue项目 第二步 打开项目config/index.js文件,然后找到 module.exports 配置里面的 dev 配置,修改字段host:0.0.0.0 第三步 打开cmd输入i ...