当前位置: 首页 > article >正文

N1BOOK [第一章 web入门]SQL注入-1:从靶场到实战的字符型注入通关详解

1. 初识SQL注入从靶场到实战的入门指南第一次接触SQL注入时我完全被这个神奇的攻击方式吸引了。简单来说SQL注入就是通过构造特殊的输入让网站的后台数据库执行我们想要的SQL语句。这就像是你去餐厅点餐本来应该说我要一份牛排结果你说了句我要一份牛排然后把整个厨房的菜都给我端上来而服务员居然真的照做了在Buuctf-N1BOOK这个靶场中我们遇到的正是典型的SQL注入挑战。打开题目页面你会看到一个简单的网页URL里有个明显的id参数比如?id1。这种带参数的URL在Web开发中非常常见也正是SQL注入最容易出现的地方。作为新手我们需要一步步来验证这里是否存在注入漏洞。2. 判断注入类型字符型还是数字型2.1 基础探测手法我刚开始学习时最困惑的就是如何判断注入类型。其实方法很简单就像做科学实验一样通过不同的输入观察输出结果。对于这个靶场我是这样测试的首先尝试数字型注入测试and 11-- // 回显正常 and 12-- // 回显正常发现两个都正常显示说明可能不是简单的数字型注入。然后尝试字符型注入测试 and 11-- // 回显正常 and 12-- // 回显不正常这次发现第二个语句的回显出问题了这就明确告诉我们这是一个字符型注入漏洞2.2 为什么单引号这么重要这里的关键在于理解SQL语句的构造方式。网站后台的SQL查询可能是这样的SELECT * FROM articles WHERE id用户输入的id值当我们输入 and 11--时实际执行的SQL变成了SELECT * FROM articles WHERE id and 11----是SQL中的注释符号它会注释掉后面的内容所以实际执行的是SELECT * FROM articles WHERE id and 11这个条件永远为真所以页面正常显示。而当输入 and 12--时条件永远为假页面就不显示正常内容了。这种差异正是我们判断注入类型的依据。3. 确定字段数量order by的妙用3.1 逐步试探法知道是字符型注入后下一步要确定查询返回的字段数量。这里我常用的方法是order by它就像是SQL中的排序指令但在这里被我们用来探测字段数。具体操作如下 order by 3 -- // 回显正常 order by 4 -- // 页面报错当order by 4时报错说明这个查询只返回3个字段。这个数字很重要因为后续的联合查询必须匹配这个字段数。3.2 为什么order by能判断字段数这是因为order by后面跟的数字表示按第几列排序。如果表只有3列你要求按第4列排序数据库当然会报错。这种报错信息虽然对用户不友好但对我们安全测试者来说却是宝贵的信息源。4. 联合查询实战获取数据库信息4.1 获取当前数据库名有了字段数信息就可以使用联合查询(union select)来获取更多信息了。我的操作步骤是-1 union select 1,database(),3 --这里有几个技巧使用-1是为了让前一个查询不返回结果这样页面就会显示我们union select的内容database()函数返回当前数据库名1和3是占位符因为我们需要匹配3个字段执行后页面通常会显示当前数据库的名称这是我们后续操作的基础。4.2 查询所有表名知道数据库名后下一步就是查看这个数据库中有哪些表。这里要用到information_schema这个特殊的数据库它存储了所有数据库的元信息。我使用的payload是?id0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schemadatabase()--这个查询做了以下几件事从information_schema.tables表中查询数据只查询当前数据库(table_schemadatabase())的表用group_concat把多个表名合并成一个字符串返回把结果放在第3个字段位置显示执行后页面会显示当前数据库中的所有表名。在这个靶场中我们看到了两个表其中一个明显是fl4g这很可能就是存放flag的表。5. 获取flag最后的冲刺5.1 查询表结构确定了flag可能在fl4g表后我们需要知道这个表有哪些列。使用如下payload?id0 union select 1,2,group_concat(column_name) from information_schema.columns where table_schemadatabase() and table_namefl4g--这个查询从information_schema.columns表中获取fl4g表的所有列名。执行后发现有个列名叫fllllag这很可能就是存放flag的列。5.2 获取最终flag现在万事俱备只需要查询这个列的内容即可?id-4 union select 1,database(), group_concat(fllllag) from fl4g --这个查询使用-4确保原查询不返回结果从fl4g表中选择fllllag列的内容用group_concat合并结果将结果显示在第3个字段位置执行后flag就会清晰地显示在页面上恭喜你完成了这次SQL注入挑战6. 防御措施与学习建议虽然我们成功利用了这个漏洞但更重要的是理解如何防御。作为开发者应该始终使用参数化查询或预处理语句。而作为学习者我建议先系统学习SQL语法理解各种语句的执行原理在本地搭建测试环境使用DVWA等漏洞演练平台练习了解各种注入类型盲注、时间注入、报错注入等学习使用sqlmap等自动化工具但一定要明白其原理我在刚开始学习时经常因为一个单引号的位置错误而调试半天。但正是这些实践中的挫折让我对SQL注入有了更深刻的理解。记住每个优秀的白帽子都是从这样的靶场练习开始的。

相关文章:

N1BOOK [第一章 web入门]SQL注入-1:从靶场到实战的字符型注入通关详解

1. 初识SQL注入:从靶场到实战的入门指南 第一次接触SQL注入时,我完全被这个神奇的攻击方式吸引了。简单来说,SQL注入就是通过构造特殊的输入,让网站的后台数据库执行我们想要的SQL语句。这就像是你去餐厅点餐,本来应该…...

智能知识管理与高效内容创作:STORM系统全解析

智能知识管理与高效内容创作:STORM系统全解析 【免费下载链接】storm An LLM-powered knowledge curation system that researches a topic and generates a full-length report with citations. 项目地址: https://gitcode.com/GitHub_Trending/sto/storm 在…...

OpenClaw智能家居中枢:基于Nanobot的物联网控制系统

OpenClaw智能家居中枢:基于Nanobot的物联网控制系统 1. 项目背景与价值 智能家居已经不是什么新鲜概念了,但真正好用又容易搭建的系统却不多见。很多方案要么太复杂,需要专业的技术背景才能部署;要么功能单一,只能控…...

基于vue的乡村耕地服务平台[vue]-计算机毕业设计源码+LW文档

摘要:本文围绕基于Vue框架开发的乡村耕地服务平台展开论述。通过深入的需求分析,明确平台需具备的功能与性能要求,采用Vue及相关技术进行系统设计与实现。该平台涵盖系统用户管理、耕地相关数据管理、农具管理等多种功能,旨在提升…...

从MP模型到BP网络:一文读懂神经网络发展史中的关键突破

从MP模型到BP网络:神经网络进化史中的技术革命 1943年的一个冬日,芝加哥大学的两位年轻科学家沃伦麦卡洛克和沃尔特匹茨可能不会想到,他们在《数学生物物理学通报》上发表的MP模型论文,会成为点燃人工智能革命的星星之火。这场持续…...

璀璨星河Starry Night入门必看:Streamlit CSS注入去除白条全流程

璀璨星河Starry Night入门必看:Streamlit CSS注入去除白条全流程 1. 引言:为什么需要去除Streamlit白条? 如果你使用过Streamlit构建Web应用,一定会注意到那个无法避免的顶部白条——它包含了菜单按钮、设置选项和默认的页面标题…...

Parabolic视频下载神器:200+网站支持的跨平台一站式解决方案

Parabolic视频下载神器:200网站支持的跨平台一站式解决方案 【免费下载链接】Parabolic Download web video and audio 项目地址: https://gitcode.com/GitHub_Trending/pa/Parabolic 你是否还在为无法下载喜欢的在线视频而烦恼?尝试了多个工具却…...

汽车气动噪声仿真入门:基于STAR-CCM+与VA One的联合仿真教学指南

starccm与Vaone进行汽车气动噪声仿真教学入门对做NVH入门的汽车人或者学生来说,单独摸starccm算CFD过流体,单独摸Vaone算SEA算结构,但两个串起来搞「真实车外风噪传到人耳的全链路小闭环」,总感觉是个「玄学连接点」卡脖子——今天…...

保姆级教程:像素语言·维度裂变器快速上手,零基础也能玩转文本裂变

保姆级教程:像素语言维度裂变器快速上手,零基础也能玩转文本裂变 1. 什么是像素语言维度裂变器? 像素语言维度裂变器(Pixel Dimension Fissioner)是一款基于MT5-Zero-Shot-Augment核心引擎构建的文本改写与增强工具。…...

载波相位观测的隐藏技巧:如何解决GNSS定位中的整周模糊度问题

载波相位观测的隐藏技巧:如何解决GNSS定位中的整周模糊度问题 在自动驾驶车辆精准判断车道位置、无人机实现厘米级悬停或是工程测绘毫米级误差的背后,都藏着一个关键技术痛点——载波相位观测中的整周模糊度问题。当普通GNSS定位还在米级精度徘徊时&…...

保姆级教程:用STM32CubeMX给STM32F103C8T6配置USB HID,打通Linux通信(附完整代码)

STM32CubeMX实战:从零构建USB HID设备与Linux通信全流程 在嵌入式开发领域,USB HID(Human Interface Device)协议因其免驱特性成为设备快速交互的热门选择。想象一下这样的场景:你刚拿到一块蓝色PCB的STM32F103C8T6核心…...

BetterNCM安装器终极指南:3分钟搞定网易云音乐插件一键安装

BetterNCM安装器终极指南:3分钟搞定网易云音乐插件一键安装 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM安装器是一款专为网易云音乐PC客户端设计的插件管理器…...

5个Blender置换贴图实战技巧:从表面平淡到细节丰富

5个Blender置换贴图实战技巧:从表面平淡到细节丰富 【免费下载链接】awesome-blender 🪐 A curated list of awesome Blender addons, tools, tutorials; and 3D resources for everyone. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-b…...

别再只认识MNIST了!从CIFAR-10到COCO,手把手教你用Python快速加载5大CV数据集

别再只认识MNIST了!从CIFAR-10到COCO,手把手教你用Python快速加载5大CV数据集 刚入门计算机视觉时,面对琳琅满目的数据集总让人手足无措——该从哪个开始?代码怎么写?数据长什么样?这些问题困扰过每个初学者…...

造相-Z-Image-Turbo LoRA 在AI编程教育中的应用:生成可视化编程案例角色

造相-Z-Image-Turbo LoRA 在AI编程教育中的应用:生成可视化编程案例角色 最近在琢磨AI编程教育这事儿,发现一个挺有意思的痛点。很多编程学习平台,尤其是面向初学者的,界面和内容都挺枯燥的。满屏的代码、单调的文档,…...

Qwen1.5-1.8B GPTQ实战:STM32嵌入式开发代码辅助生成

Qwen1.5-1.8B GPTQ实战:STM32嵌入式开发代码辅助生成 最近在折腾一个STM32的小项目,需要用到ADC和DMA做数据采集。说实话,每次配置这些外设寄存器,都得翻手册、查例程,一不留神就搞错。那天突发奇想,手头正…...

ComfyUI 负面提示词实战指南:精准控制生成内容的关键技巧

最近在折腾 ComfyUI,发现负面提示词(Negative Prompt)真是个让人又爱又恨的东西。用好了,生成的内容质量能上一个台阶;用不好,要么效果平平,要么直接“翻车”。今天就来聊聊我在实战中总结的一些…...

3步构建无缝屏幕翻译体验:Screen Translator的跨场景解决方案

3步构建无缝屏幕翻译体验:Screen Translator的跨场景解决方案 【免费下载链接】ScreenTranslator Screen capture, OCR and translation tool. 项目地址: https://gitcode.com/gh_mirrors/sc/ScreenTranslator Screen Translator是一款集成屏幕捕捉、OCR图像…...

foobar2000个性化定制终极指南:从零打造专业级音乐播放界面

foobar2000个性化定制终极指南:从零打造专业级音乐播放界面 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn 是一个专为 foobar2000 设计的 DUI(默认用户界面&#x…...

Wan2.2-I2V-A14B部署案例:地方政府新媒体中心AI短视频内容生产平台

Wan2.2-I2V-A14B部署案例:地方政府新媒体中心AI短视频内容生产平台 1. 项目背景与需求分析 地方政府新媒体中心承担着政务宣传、民生服务等重要职能,短视频内容生产已成为日常工作的重要组成部分。传统视频制作流程面临以下挑战: 人力成本…...

博图SCL vs梯形图LAD:自动化项目选型指南(含性能对比测试)

博图SCL与梯形图LAD技术选型实战指南:从性能测试到商业决策 在工业自动化领域,编程语言的选择往往决定了项目的长期可维护性和运行效率。当工程师面对西门子博图(TIA Portal)平台时,常陷入SCL(结构化控制语言)与LAD(梯形图)的选择困境。本文…...

如何在KiCAD中快速配置ESP8266模块库:新手必看的完整教程 [特殊字符]

如何在KiCAD中快速配置ESP8266模块库:新手必看的完整教程 🚀 【免费下载链接】kicad-ESP8266 Schematic symbols and PCB footprints for ESP8266 modules 项目地址: https://gitcode.com/gh_mirrors/ki/kicad-ESP8266 ESP8266作为物联网领域的明…...

YOLO毕业设计效率提升实战:从模型轻量化到部署流水线优化

最近在帮学弟学妹们看毕业设计,发现很多基于YOLO的项目都卡在了“效率”这个坎上。模型训练动辄几天,推理速度慢如蜗牛,部署起来更是依赖一大堆库,环境配置让人头大。明明是个很好的创意,却因为工程效率问题显得完成度…...

UniK3D:单目3D估计技术的突破性解决方案

UniK3D:单目3D估计技术的突破性解决方案 【免费下载链接】UniK3D [CVPR 2025] UniK3D: Universal Camera Monocular 3D Estimation 项目地址: https://gitcode.com/gh_mirrors/un/UniK3D 单目3D估计技术正迎来革命性突破——UniK3D作为一款基于单目相机的通用…...

面试官总问AQS?看完这篇就够了:手把手图解ReentrantLock加锁解锁全流程(附高清时序图)

深度解析ReentrantLock的AQS实现:从加锁到解锁的全链路剖析 在Java并发编程领域,理解AbstractQueuedSynchronizer(AQS)的工作原理是掌握JUC包的核心钥匙。作为ReentrantLock、Semaphore等同步器的基石,AQS通过精巧的设…...

革新性基因簇可视化工具:Clinker如何帮助生物学家加速代谢途径研究

革新性基因簇可视化工具:Clinker如何帮助生物学家加速代谢途径研究 【免费下载链接】clinker Gene cluster comparison figure generator 项目地址: https://gitcode.com/gh_mirrors/cl/clinker 在生物信息学研究领域,基因簇分析是揭示微生物次级…...

EasyExcel隐藏表技巧:手把手教你打造动态数据源的下拉与级联模板

EasyExcel动态数据源实战:隐藏表与级联下拉的高级实现技巧 在企业级Excel导出场景中,动态数据源和级联下拉是提升用户体验的关键功能。本文将深入探讨如何利用EasyExcel结合Apache POI实现这些高级特性,特别聚焦于隐藏工作表的技术实现与优化…...

cosyvoice pip安装实战指南:从环境配置到避坑技巧

最近在折腾语音相关的项目,接触到了 CosyVoice 这个工具。说实话,刚开始安装的时候,被各种依赖冲突和环境配置问题搞得有点头大。经过一番摸索和踩坑,总算总结出了一套比较顺畅的 pip 安装流程。今天就把我的实战经验整理成笔记&a…...

SDMatte在摄影工作室落地:婚纱照/儿童照/产品静物图智能抠图流水线

SDMatte在摄影工作室落地:婚纱照/儿童照/产品静物图智能抠图流水线 1. 摄影工作室的抠图痛点 在婚纱摄影、儿童摄影和产品静物拍摄领域,抠图是最耗时的后期工作之一。传统Photoshop手动抠图面临三大挑战: 时间成本高:一张婚纱照…...

ChatGPT on WeChat 技术实现全解析:从接入到生产环境部署

背景痛点:微信生态的“5秒”与GPT的“长考” 在微信生态中集成ChatGPT,首先面临的是一个“急性子”和一个“慢性子”的矛盾。 微信公众平台对开发者服务器有一个硬性规定:必须在5秒内对用户消息进行响应,否则微信服务器会判定消…...