本次练习来源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,所以可以登录成功。
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为字符型注入。
测试–>猜测语句
$id=$_POST['id']
select 字段1,字段2 from 表名 where id=$id
比如这里 id=2 or 1=1 # 爆出了所有信息(看render选项卡更清晰) 表示存在数字型注入
1.爆出显位
1和2都行
2.数据库名
3.表名
准备爆一下users表
4.字段名
5.查内容
仅记录,请先面向搜索引擎务必搞懂原理
a’测试有报错,可以使用xpath报错注入
insert注入是在注册处,update注入在更新资料处
抓包后发到repeater
delete语句: delete froem users where id=1 and 1=1;
勿用or!整张表都会被删除
多留言,然后删除,抓包
发现id++(哦正常是把鼠标放在删除按钮上发现get请求有参数id的值,猜测这是delete语句的where条件)注入点就是在id参数上(get方式)
可以进行延时注入/布尔注入