SQL注入之Sqli-labs系列第一关
在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D、明小子、穿山甲等一切工具风靡至今。当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sql注入的练习场网上有大把的靶场,我个人比较喜欢sqli-labs这个靶场,关卡有几十个,每一关都有不同的感觉。写这篇文章是个人再练习注入的时候自己总结出来的一部分经验,百度上面也能搜的到相关类似的过关技巧,至于为什么要写这个,这相当于对自己经验的一个总结吧!关于搭建请自行github进行查看,这里我就有不多说了,地址:https://github.com/Audi-1/sqli-labs
废话不在多说 let's go! 开始挑战第一关(Error Based- String)
访问我们的地址http://localhost:81/sqli-labs-master/Less-1/index.php,然后构造下注入环境,根据页面提示需要加入一个数字参数,直接加入?id=数字或者其他都可以。

这里为了方便查看自己输入的sql语句是带到数据库中是怎么样的,可以在代码中加入 echo "$sql<br>";

老规矩,输入and 1=1 来进行判断,显示正常

继续输入and 1=2来判断,瓦特,既然没有任何的反应

既然这样无效,直接输入单引号看是否会提示报错

很明显出现了错误,这里我们将错误提示拿出来进行分析,从下图中很容易就看出了门道

我们来试着构造下它的sql语句,由于mysql会将你输入的内容带入数据库后强制转换成字符串,所以这样一来我们就可以采用闭合单引号的方式进行注入了

但后面还有个limit 0,1, 直接再采用注释符将后面的内容给干掉,常用的单行注释符有(# , --+),个人比较喜欢#,来吧,开干吧!
输入 ‘ and ‘1’ =‘1闭合后,回显正确

在输入 ‘ and ‘1’ =‘2返回错误

前面已经测试了存在注入,现在就开始使用 order by 猜解字段数了,这里我就不一一去试了,正确是3个字段数

使用union select进行联合查询,再加入-号或者and 1=2让其报错

进入下面的操作前,先介绍几个函数:
(1)version():查看数据库版本
(2)user():查看当前用户
(3)database():查看使用的数据库
(4) limit :limit子句来分批获取所有数据
(5)group_concat():一次性获取数据库信息。
查看数据库,版本,当前用户



可以看出数据库版本是5.0,直接爆出所有表名,数据库名转成16进制,这里可以使用小葵转换工具,或者使用火狐的hackbar工具直接转换


接下来获取字段名

获取数据,加入0x5c是为了便于查看

好了,第一关比较简单,有些肯定会有疑惑,为什么要去看information_schema库,tables,table_schema,table_name都是这么来的, 要学习sql注入,你必须先了解数据的结构,建议使用数据库管理工具一查便知,我这里就不多做解释。。。
SQL注入之Sqli-labs系列第一关的更多相关文章
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- Sqli labs系列-less-5&6 报错注入法(上)
在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...
- Sqli labs系列-less-4 这关好坑!!!
这章,可能我总结开会比较长,图比较多,因为,我在做了一半,走进了一个死胡同,脑子,一下子没想开到底为啥.... 然后我自己想了好长时间也没想开,我也不想直接就去看源码,所以就先去百度了一下,结果一下子 ...
- Sqli labs系列-less-5&6 报错注入法(下)
我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...
- sqli-labs系列——第一关
先看了一遍关于sql的一些知识点,通关sqli-labs加深下印象.之前也因为作业的原因通关过前10关,但那时候不懂得原理,跟着网上的教程做的,所以这次尝试自己思考通关. less1 尝试and1=2 ...
- ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...
- Sql注入测试--Sqlmap
慕课网sqlmap学习笔记: 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 例如 (1)在url上 ...
随机推荐
- Spring Cloud系列之Feign的常见问题总结
一.FeignClient接口,不能使用@GettingMapping 之类的组合注解 代码示例: @FeignClient("microservice-provider-user" ...
- 十七、Spring框架(IOC/DI)
一.Spring框架 Spring是一个基于IOC和AOP的结构J2EE系统的框架. 1.IOC反转控制是Spring的基础(Inversion Of Control).也就是说创建对象由以前的程序员 ...
- 一、SQL应用(工作中遇到的根据表的某列的值不同,采用的不同列关联表)
一.工作总结: 今天工作中遇到了这样一个需求,具体是根据某张表的某一列值得不同,进行不同关联操作.起初自己的想法是采用UNION操作,把两种情况连接起来,但是会出现一个问题,当进行动态传值SQL拼接的 ...
- 有关String的一些方法的使用
1.String字符串是引用数据类型. 2.String是常量,如果看到给String进行赋值的情况,是说明将该String的地址进行改变了. 3.String的一些常用的方法 toUpperCase ...
- java旅程(二) 基本语法
java变量: 数值型 整数类型(byte,short,int,long)浮点类型(float,double) 字符型 char 基本数据类型 ...
- maven plugins
<build> <finalName>lessons</finalName> <plugins> <plugin> <groupId& ...
- 微信小程序开发工具 POST net::ERR_PROXY_CONNECTION_FAILED 代理问题
几天不动代码,再运行成这样了, {errMsg: "getLocation:fail Error: tunneling socket could not…d, cause=connect E ...
- Linux c++ time different
下面这个函数可以得到微秒级别: #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); 函数&q ...
- http协商缓存VS强缓存
之前一直对浏览器缓存只能描述一个大概,深层次的原理不能描述上来:终于在前端的两次面试过程中被问倒下,为了泄恨,查阅一些资料最终对其有了一个更深入的理解,废话不多说,赶紧来看看浏览器缓存的那些事吧,有不 ...
- oracle中的对象创建及删除语句【原创】
oracle对象 1.表 a)创建表1 create table students( id number(10), stuno number(10) , sex varchar2(2), age in ...