0x00介绍

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

对于初学者而言,找漏洞最好是基于白盒审计进行,所谓白盒审计可以简单地理解为就是看着代码找漏洞,当然了,在web方面的代码审计可没想象的那么轻松,不会像C语言中很经典的溢出,先定义一个buffer,然后用一个gets()函数直接获取内容,这么简单的溢出,泥萌也太小瞧程序媛/猿了。在web方面的代码审计,感谢伟大的社会主义社会,我国大部分的网站都是php建的(画外音:php是世界是最好的语言,哈哈),所以大多数情况下我们都是审计php代码,php函数又那么多,相互之间互相调用,使得代码审计不容易,当然了,也不难,只要掌握了技巧,结合经验,就能找出漏洞所在。在0x04部分小表弟会给出一些自己的经验。

在正式挖洞前,我们先看看DVWA给出的四种级别的SQL注入的源代码。

0x01基于dvwa的代码审计

DVWA 的代码分为四种安全级别:Low,Medium,High,Impossible。初学者可以通过比较四种级别的代码,接触到入门级别的代码审计的内容。

DVWA使用界面

SQL注入(SQL Injection)

在左下角的DVWA Security可以调节难度系数,即low,medium,high,impossible选中后点击submit提交即可。

点击左下角view source可以看到源代码,方便进行代码审计

我们可以看到四种级别的代码分别如下所示:

代码:

低级(low)

分析:

关键语句:

$id = $_REQUEST[ 'id' ];

// Check database

$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";

可以看到:

Low级别的代码对来自客户端的参数id没有进行任何的检查与过滤,存在明显的SQL注入。

中级(medium)

分析:

关键代码:

$id = mysql_real_escape_string( $id );

// Check database

$query = "SELECT first_name, last_name FROM

users WHERE user_id = $id;";

可以看到:

Medium级别的代码利用mysql_real_escape_string函数对特殊符号\x00,\n,\r,\,’,”,\x1a进行转义,在一定程度上控制了用户的输入

高级(high)

分析:

关键语句:

$query = "SELECT first_name, last_name FROM users WHERE user_id = $id

LIMIT 1

可以看到:

代码希望通过LIMIT 1来控制使得只输出一个查询结果

不可能(Impossible)

分析:

关键代码:

$data = $db->prepare( 'SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;' );

$data->bindParam( ':id', $id, PDO::PARAM_INT );

可以看到:

代码中限制返回的查询结果数量为一时,才会输出,防止了大量数据的泄露,同时采用了PDO技术,隔离了代码与数据,使得用户输入的数据不再被当作代码执行,采用这种方案,杜绝了SQL注入漏洞的发生

0x02挖掘漏洞

注:

1.接下来的过程中会大量用到sqlmap,部分站点的漏洞将直接以sqlmap的形式给出。所以建议小伙伴先去熟悉下sqlmap。

2. 以下提交的漏洞均已被厂家修复,小伙伴们就不要想搞事情了

3.本文展现的漏洞在测试前已获授权,请小伙伴们勿非法测试

先来枚有web页面的漏洞:

存在漏洞的页面

扫目录时发现该url下存在某事件型漏洞

采用某位大神的中转脚本:

通过sqlmap神器成功挖到漏洞

拿到的数据库

Sqlmap测试时截图

总结:第一枚漏洞主要是采用某事件型漏洞结合sqlmap挖到的,难度相当于DVWA中的Medium级别

什么?没有数据看着不过瘾?你这是要搞事情啊大兄弟!好吧,再来一枚数据量大的

第二枚漏洞:

测试时没有截web的图,只有sqlmap,将就着看吧,看看

存在漏洞的站点

Sqlmap扫一发

加个—tables继续

就拿上张图的mallbuilder来开刀吧

继续—current-db

红色打码的部分是手机号或真实姓名或邮箱号,过于敏感就打码了,可以看到图中下面password就是密码编码加密后的字符串

拿到用户名和密码后我们可以登陆后台

红色打码部分为收货人姓名及手机号,有一条还包括收货地址

红色打码部分为手机号

可以看到后台所有的功能我们都是可以使用的,就不继续了

总结:通过简单的sqlmap命令指定特定的表、数据库来“脱裤”,拿到后台登陆帐号密码,进而进行进一步的操作。此站点的代码强度相当于DVWA中的Medium级别.

0x03资源推荐

代码审计方面可以使用法师尹毅(Seay)的源代码审计系统

DVWA方面的实际操作可以登陆合天网安实验室进行练习,连接如下:

SQL注入时的神器SQLMAP在合天网安实验室也有相应的课程,连接如下:

抓包改包看参数的神器burpsuite在合天网安实验也有相应课程,连接如下:

0x04经验心得

SQL注入漏洞挖掘的总体的思路:

1. SQL注入漏洞的判断,即寻找注入点

2. 判断后台数据库类型

3. 确定XP_CMDSHELL可执行情况;若当前连接数据的帐号具有SA权限(这是SQL系统中的最高权限),且master.dbo.xp_cmdshell扩展存储过程(调用此存储过程可以直接使用操作系统的shell)能够正确执行,则整个计算机可以通过几种方法完全控制,也就完成了整个注入过程,否则继续:

1. 发现WEB虚拟目录

2. 上传ASP木马;

3. 得到管理员权限

了解了思路,在实际挖洞的过程中,常常会碰到需要绕过的情形,针对这种情况,表弟给大家提供了常用的绕过方法

一、引号绕过

会使用到引号的地方是在于最后的where子句中。如下面的一条sql语句,这条语句就是一个简单的用来查选得到users表中所有字段的一条语句。

select column_name from information_schema.tables where

table_name="users"

这个时候如果引号被过滤了,那么上面的where子句就无法使用了。那么遇到这样的问题就要使用十六进制来处理这个问题了。

users的十六进制的字符串是7573657273。那么最后的sql语句就变为了:

select column_name from information_schema.tables

where table_name=0x757365727

二、逗号绕过

在使用盲注的时候,需要使用到substr() ,mid() ,limit。这些子句方法都需要使用到逗号。对于substr()和mid()这两个方法可以使用from to的方式来解决。

select substr(database(0 from 1 for 1);

select mid(database(0 from 1 for 1);

对于limit可以使用offset来绕过

select * from news limit 0,1

# 等价于下面这条SQL语句

select * from news limit 1 offset 0

三、比较符()绕过

同样是在使用盲注的时候,在使用二分查找的时候需要使用到比较操作符来进行查找。如果无法使用比较操作符,那么就需要使用到greatest来进行绕过了。

最常见的一个盲注的sql语句。

select * from users where id=1 and

ascii(substr(database(),0,1))>64

此时如果比较操作符被过滤,上面的盲注语句则无法使用,那么就可以使用greatest来代替比较操作符了。greatest(n1,n2,n3,等)函数返回输入参数(n1,n2,n3,等)的最大值

那么上面的这条sql语句可以使用greatest变为如下的子句:

select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64

0x05防护措施

1、解决SQL注入漏洞的关键是对所有来自用户输入的数据进行严格检查、对数据库配置使用最小权限原则所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

2、对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

3、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过

以上仅为个人观点,欢迎小伙伴们提出意见讨论。

本文为合天原创奖励文章,转载请联系微信公众号“合天智汇”!未经允许,禁止转载!

mysql盲注脱裤_白帽子挖洞—SQL注入篇相关推荐

  1. mysql盲注脱裤_记一次猥琐的脱裤

    简介 环境 php+pdo+mysql+linux FUCK IT 因为是pdo,所以支持多行,一开始只用了时间盲注跑了用户表的列出来,然后可以通过多行语句执行 updaet user set ema ...

  2. mysql盲注脱裤_BT5下使用SQLMAP入侵加脱裤 -电脑资料

    早就听说BT5下的sqlmap功能很强大,今天终于下决心拒绝DOTA和苍老师的诱惑,静下心来研究研究这个传说中的sqlmap!由于在虚拟机里面用的 ,我直接在真机上也装了个BT5的系统,嘻嘻··,那感 ...

  3. 白帽子挖洞第III篇作业--xray工具配置代理池(1)

    这个问题在很早之前就有人反复提过了,某手注找到注入点,被某防护ban了ip,无奈,有了代理池的出现. xray是支持代理池的,可以参考Freebuf这 https://www.freebuf.com/ ...

  4. 白帽子挖洞第II篇作业--xray+fofa主动扫描

    在去年到今年期间,出现了fofa2xray这样通过调用fofa的api,配合xray的被动扫描,实现挖洞. 本人有幸花了点时间搭好环境,但在确定api已经调用成功后,发现无法返还数据,如图 得出的结果 ...

  5. 白帽子挖洞—跨站请求伪造(CSRF)篇

    点击"合天智汇"关注,学习网安干货 0x00 介绍 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attac ...

  6. 命令执行漏洞 java_白帽子挖洞—命令执行(Commnd Execution)篇

    0x00介绍 命令执行漏洞概念:当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数.如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的 ...

  7. mysql盲注ascii中文_[翻译]关于通过对8bit的ascii做右位移提高mysql盲注效率

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 通过这种方法我们只需要做8次select来确定一个键值的第一位或第n位 下面将以查询mysql数据库当中user()的第一位为例: ps:第二位,第三位依 ...

  8. 白帽子挖洞作业第V篇作业--那些实用挖洞fofa语句总结

    fofa信息收集: fofa支持搜索http头部的内容 二次过滤 比如配合host进一步筛选漏洞主机 host=".edu.cn" && header=" ...

  9. mysql盲注_二十八、MySQL盲注

    在学习本实验之前,请确保已经学过"SQL注入原理与实践"这个实验. 在 SQL注入原理与实践 这个实验中,我们已经知道了SQL注入的原理,并且能够完成支持union 且有回显的注入 ...

最新文章

  1. DeeCamp 2020 赛题大公开!快来看你想选哪个
  2. Rust 语言风靡学术界
  3. Highcharts-2.3.2 网页曲线绘制工具 一淘网价格曲线
  4. Java 异常基础 Exception
  5. 独家下载!2021前端热门技术解读
  6. .NET6之MiniAPI(一):开始Mini API
  7. C# 9.0中引入的新特性init和record的使用思考
  8. 栈与队列之用java实现队列
  9. P3435 [POI2006]OKR-Periods of Words kmp + fail指针
  10. UVA495 Fibonacci Freeze【大数+万进制】
  11. 第一次作业(构建之法8,16读后感)
  12. 1.5.2 Prime Palindromes 回文质数(构造回文)
  13. 小任务:简单实现银行业务系统(附 ideal编辑器固定序列化版本方法)
  14. 如何通过供应商分类来提高采购绩效?
  15. 老哥们 FlexiTimer库怎么用不了呢 ,指点一下小弟
  16. teredo 未能解析服务器名,关于Teredo 参数无法进行限定,服务器连接已阻止的各种解决办法...
  17. 一篇关于运放自激振荡的帖子
  18. Clion 2021解决中文输出乱码问题-亲测有效
  19. 读《矿矿上高中一年级》所得到的收获
  20. Maven Repository下载开源软件jar包

热门文章

  1. 基于java平台简易计算器_基于java的简易计算器的设计
  2. 前嗅ForeSpider采集:采集图片/视频/资源文件
  3. 程序分析-基于SVF实现AnderSen指针分析算法
  4. GBASE核心业务系统解决方案入围工信部“2022年信息技术应用创新典型解决方案”
  5. 上计算机课的日记100字,体育课日记100字(通用17篇)
  6. QCon 2019 大会| 淘宝前端技术专家开讲啦 !
  7. 单片机实验笔记(汇编、Proteus仿真)
  8. 关于数字转义\377的论述
  9. 惠普计算机X9W2AV参数,康佳42MS96PD 全市最低价3D电视
  10. \(^_^)/ ngnix、lighttpd、apache三大web服务器