Pikachu-SQL注入之数字型注入和字符型注入

开始我们的实验

数字型注入                  

 

发现有一个下拉框,随便选一个查询,,并没有在url里面去传参,可以发现是用post(表单)方式提交的

 

根据上图yy一下后台的逻辑:

$id = $_POST['id']

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

正常情况下这里的$id值为(1~6),我们换成 1 or 1=1通过返回来看看后台会不会把这个逻辑去执行。

 

POST的请求我们需要抓包来测试,因为输入框只有一个可选择的表单,没法直接构造语句

在输入框选择id,浏览器设置代理,提交,抓包,为了方便发送给Repeater模块

根据刚才的逻辑,payload为:

可以发现除啦id=1的其他id也都返回出来啦

 

字符型注入                      

 

随便输入下,发现请求是通过url提交的,是一个get请求。

 

根据上图返回yy下后台的逻辑

$uname=$_GET['kobe']

select 字段1,字段2 from 表名 where username='kobe';(在后台数据库中字符串kobe不打单引号会报错的)

 

构建payload

如果这个 kobe or 1=1  这样会报错的,因为会变成这样,select 字段1,字段2 from 表名 where username='kobe or 1=1'

会被单引号处理掉,这个整体会被当做字符串,,而这个字符串在后台是不存在的。我们需要构造闭合,构造合法的SQL语句

kobe' or 1=1#'  kobe' 把后台username前面的单引号闭合掉,#'或者--  '    把后台username后面的单引号闭合掉

如果想直接在url里面提交的话,我们的payload要做url编码

 

posted @ 2020-04-03 10:13  escwq  阅读(2026)  评论(0编辑  收藏  举报