开始我们的实验
数字型注入
发现有一个下拉框,随便选一个查询,,并没有在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后面的单引号闭合掉