sql注入练习4(insert,update,delete)

本次练习来源pikachu平台

检测

单引号 :报错
or 1=1# 数字型
’ or 1=1# 字符型用引号闭合,同时加注释符号
and 1=1 数字型 and 1=1与原来一样,不用注释掉后面了
and 1=2 数字型 错误
’ or 1=1#
order by找数据数量等…
之后再补充一些常用的,比如绕过waf等

万能密码

万能密码是由于某些程序,通过采用判断sql语句查询结果的值是否大于0,来判断用户输入数据的正确性造成的。当查询之大于0时,代表用户存在,返回true,代表登录成功,否则返回false 代表登录失败。由于 ‘or 1=1–’ 在执行后,结果始终为1,所以可以登录成功。

类型判断(数字vs字符)

1、数字型注入
当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。

测试步骤:

(1) 加单引号,URL:www.text.com/text.php?id=3’

对应的sql:select * from table where id=3’ 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常;

(2) 加and 1=1 ,URL:www.text.com/text.php?id=3 and 1=1

对应的sql:select * from table where id=3’ and 1=1 语句执行正常,与原始页面如任何差异;

(3) 加and 1=2,URL:www.text.com/text.php?id=3 and 1=2

对应的sql:select * from table where id=3 and 1=2 语句可以正常执行,但是无法查询出结果,所以返回数据与原始网页存在差异

如果满足以上三点,则可以判断该URL存在数字型注入。

2、字符型注入
当输入的参数为字符串时,称为字符型。字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。

例如数字型语句:select * from table where id =3

则字符型如下:select * from table where name=’admin’

因此,在构造payload时通过闭合单引号可以成功执行语句:

测试步骤:

(1) 加单引号:select * from table where name=’admin’’

由于加单引号后变成三个单引号,则无法执行,程序会报错;

(2) 加 ’and 1=1 此时sql 语句为:select * from table where name=’admin’ and 1=1’ ,也无法进行注入,还需要通过注释符号将其绕过;

(3) 加and 1=2— 此时sql语句为:select * from table where name=’admin’ and 1=2 –’则会报错

如果满足以上三点,可以判断该url为字符型注入。

数字型注入(post)

测试–>猜测语句

$id=$_POST['id']
select 字段1,字段2 from 表名 where id=$id

在这里插入图片描述
比如这里 id=2 or 1=1 # 爆出了所有信息(看render选项卡更清晰) 表示存在数字型注入

1.爆出显位
1和2都行
在这里插入图片描述
2.数据库名
在这里插入图片描述
3.表名
准备爆一下users表
在这里插入图片描述
4.字段名
在这里插入图片描述
5.查内容
在这里插入图片描述

insert/update型注入

仅记录,请先面向搜索引擎务必搞懂原理

a’测试有报错,可以使用xpath报错注入
insert注入是在注册处,update注入在更新资料处
抓包后发到repeater
在这里插入图片描述

在这里插入图片描述

delete注入

delete语句: delete froem users where id=1 and 1=1; 勿用or!整张表都会被删除
多留言,然后删除,抓包
在这里插入图片描述
在这里插入图片描述
发现id++(哦正常是把鼠标放在删除按钮上发现get请求有参数id的值,猜测这是delete语句的where条件)注入点就是在id参数上(get方式)

在这里插入图片描述
删除失败的时候,说明布尔注入

可以进行延时注入/布尔注入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章