在开始接触渗透测试开始,最初玩的最多的就是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系列第一关的更多相关文章

  1. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  2. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  3. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  4. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

  5. Sqli labs系列-less-4 这关好坑!!!

    这章,可能我总结开会比较长,图比较多,因为,我在做了一半,走进了一个死胡同,脑子,一下子没想开到底为啥.... 然后我自己想了好长时间也没想开,我也不想直接就去看源码,所以就先去百度了一下,结果一下子 ...

  6. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

  7. sqli-labs系列——第一关

    先看了一遍关于sql的一些知识点,通关sqli-labs加深下印象.之前也因为作业的原因通关过前10关,但那时候不懂得原理,跟着网上的教程做的,所以这次尝试自己思考通关. less1 尝试and1=2 ...

  8. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  9. Sql注入测试--Sqlmap

    慕课网sqlmap学习笔记: 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 例如 (1)在url上 ...

随机推荐

  1. Spring Boot项目打包部署到外部Tomcat

    1.生成war包 1)修改POM文件,将打包类型改为war:<packaging>war</packaging> <packaging>war</packag ...

  2. MSMQ消息传递的优先级

    一.消息传递的优先级 在MSMQ中消息在队列里传输是分有优先级的,这里我就以实例的形式介绍下关于优先级的使用,优先级一共有七种,MessagePriority枚举里全部进行了封装.因这里只作程序演示就 ...

  3. atom - Emmet插件使用,代码快速填写

    参考转载:http://www.hangge.com/blog/cache/detail_1537.html 用法: 输入:ul>li*6    接着按:tab键 常用语法: 1.后代>: ...

  4. java正则表达式中的POSIX 字符类和Unicode 块和类别的类介绍

    假如现在有一个需求,要你用Java语言来匹配出一个文本里面的所有(英文半角)标点符号,你会怎么写呢?我想大多数人应该是把这些符号都罗列出来, 如: !"#$%&'()*+,-./:; ...

  5. RWCString 定义 memeroy leak

    代码截取片段: testDefs.hh class testDefs { public: static const RWCString testStr; }; testDefs.cc const RW ...

  6. VS 中常用的一些快捷键

    一.代码自动对齐 CTRL+K+F     二.撤销/反撤销 1.撤销---使用组合键“Ctrl+Z”进行撤销操作 2.反撤销---使用组合键“Ctrl+Y”进行反撤销操作 三.调用智能提示 使用组合 ...

  7. bzoj2946

    题解: 和poj1226差不多 把翻转去掉 然后不要忘记开大数组和二分的上限答案 代码: #include<bits/stdc++.h> using namespace std; type ...

  8. 【转载】Qt中图像的显示与基本操作

    Qt可显示基本的图像类型,利用QImage.QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放.旋转). 参考:Qt中图像的显示与基本操作 - ykm0722的专栏 - ...

  9. 初始JSP

    什么是JSP 1.JSP(Java Server Pages):在HTML中嵌入Java脚本代码 静态内容是JSP页面中的静态文本,其基本是HTML文本,与Java和JSP语法无关. 例子: 运行结果 ...

  10. C/C++知识补充 (1)

    ● C++的圆括号运算符() 下列关于圆括号运算符的功能说法不正确的是(C) . A. 可用于强制类型转换 B 可用于类型构造 C 可用于类型声明 D 可用于函数调用 对大部分可重载的运算符来说,它既 ...