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

SQL预编译学习笔记

知识点

./git文件还原源代码工具:githacker

对于git的使用:

git命令如何查看所有提交的log,如何把head指针指向某个特定log

使用git log命令可以查看仓库的提交历史,它会展示每个提交的哈希值、作者、日期、提交信息等详细信息。

  • 简洁展示(每行显示一条提交的哈希和提交信息):git log --oneline

  • 过滤特定作者/日期等条件(例如只看某作者的提交):git log --author="作者名"

head指针指向当前工作分支的最新提交,若要指向特定提交(如历史中的某个 commit),需用git checkout命令:

  • 切换到指定提交:

git checkout <commit_hash> <commit_hash> 是目标提交的哈希值(可通过 `git log` 查看)

若要基于该提交创建新分支并切换:

git checkout -b <新分支名> <commit_hash>

jwt:

json web token

由三部分组成:

  1. Header(头部):描述JWT的元数据,通常包含令牌类型(如JWT)和使用的签名算法(如HMAC SHA256或RSA)。

  2. Payload(载荷):包含声明(claims),即要传输的信息,如用户ID、权限等。载荷是自包含的,但建议不要存放敏感数据(因可被解码)。

  3. Signature(签名):用于验证消息的完整性和真实性,由Header、Payload和密钥通过指定算法生成。

JWT的核心作用是身份验证信息交换:客户端登录后,服务器生成JWT并返回;后续请求中,客户端携带JWT,服务器通过验证签名确认请求合法性

Jumpserver:

Jumpserver 是一款开源的堡垒机(跳板机)系统,主要用于集中管理和审计 IT 资产的运维操作

  1. 集中管控:统一管理服务器、数据库、网络设备等 IT 资产的访问权限,避免分散式管理带来的安全风险。

  2. 权限隔离:通过角色、用户、资产的多维度授权,实现“最小权限原则”,限制运维人员的操作范围。

  3. 操作审计:全程记录运维命令、文件操作、会话录像等,满足合规审计(如等保、SOX)要求。

  4. 安全增强:支持双因素认证、操作审批、IP 白名单等,防止未授权访问。

  5. 协议支持:兼容 SSH、RDP、Telnet 等主流运维协议,覆盖多数 IT 资产类型。

file-open:如果exit被注释

php特性:

id=1&id=2,传递两个相同的id值,php接受的是最后一个

i_d,i.d,i[d

预编译绕过思路:

预编译防御可参数化的sql注入,对于不可参数化的位置,预编译没有办法

order by不能参数化,有可能产生注入

limit mysql5.5以前有可能产生注入

order by 后的参数不能放进引号中,如果有引号就失效了,而预编译后会自动加引号,因此order by后不能预编译

数据库有两种预编译:

  • 虚假的预编译:

页面代码:

log日志中admin被添加‘’

给admin添加‘’后:

log日志中单引号被转义

默认的预编译模式模拟预编译被称作虚假的预编译,因为他在sql执行的过程中其实根本没有参数绑定、预编译的过程,本质上只是对符号做了过滤

与正常查询一样,唯一不同是自动给查询参数添加单引号,在底层将参数原本的单双引号自动转义

  • 真实的预编译:

页面代码:

1,prepare(预备准备) 占位,后续转递的值都被认为是username

2,execute(执行)

预编译其实是为了提高MySQL的运行效率而诞生(而不是为了防止sql注入),因为它可以先构建语法树然后带入查询参数,避免了一次执行一次构建语法树的繁琐,对于数据量以及查询量较大的数据库能极大提高运行效率。

预编译下的sql注入点

宽字节 有一定条件:

真实预编译情况下:

当设置编码之后,日志里查询参数都被自动转成16进制,不会产生歧义

虚假的预编译情况下:

页面代码:

虚假预编译在底层自动转义单引号,使用%df%5c使\失效

生产环境下不可能出现

  1. 没人使用gbk

  2. 都使用真预编译

无法预编译的位置 order by group by

页面代码:

在日志中可以看到底层给username参数自动添加‘’同时在网页中可以看到order by排序失效

预编译只是消除了sql执行的歧义,没有消除sql注入本身

代码审计中的file-open问题:

SQL注入复现

第26关

被过滤

使用括号代替空格

and,or使用双写

and,or关系运算符方式(and失效,or生效)

127.0.0.1/sqlilabs/Less-26/?id=1'aandnd(updatexml(1,concat(0x7e,user(),0x7e),1))aandnd('1')='1

daiqile

空格可以用/**/替换,等号绕过:like,regexp,单双引号绕过:mysql支持16进制,用16进制替换表名

思考:为什么

?i_d=-1/**/union/**/select/**/1,2,3&i_d=1&submit=1 ​ ?i.d=-1/**/union/**/select/**/1,2,3&i_d=1&submit=1 ​ ?i.d=-1/**/union/**/select/**/1,2,3&i.d=1&submit=1

这三种情况结果都是admin

$request接参数时,i.d会转换成i_d,php特性两个相同参数接收最后一个,此时绕过dowith_sql函数,在request_uri时i.d不变,此时同时存在i_d,i.d

32关:

宽字节注入

通过%df和%5c结合使转义字符失效

\通过uncode编码成%5c,%df%5cuncode编码:运

open-file

页面:

源代码:

抓包:

结果:

请求走私

debug调试:

python脚本执行:

没有执行结果的原因:字符编码问题

http://www.jsqmd.com/news/708513/

相关文章:

  • 微信聊天记录永久备份:WeChatExporter开源工具完整指南
  • 精选AI写专著工具,一键生成20万字专业专著,轻松应对出版需求!
  • MPC Video Renderer终极指南:深度解析DirectShow视频渲染技术实现
  • 每日安全情报报告 · 2026-04-27
  • RK61 Type-C版深度体验:从开箱到精通,这些隐藏功能和省电技巧你可能不知道
  • GPON与EPON技术对比:光纤接入网的核心选择
  • 告别内存玄学:用stressapptest给你的嵌入式设备做个‘压力体检’(附交叉编译避坑指南)
  • 如何用Onekey轻松下载Steam游戏清单?终极指南揭秘
  • 技术单例的模式实现与应用限制
  • 终极指南:Ai2Psd实现Illustrator到Photoshop矢量导出的完整解决方案
  • Docker原生WASM运行时落地实践:从零搭建低延迟边缘AI推理平台,72小时上线并降低67%资源开销
  • 5分钟上手d2s-editor:暗黑2存档编辑器的终极解决方案
  • 给硬件工程师的PCIe实战避坑指南:从BAR配置到链路训练,这些细节你踩过几个?
  • 5分钟上手ExtractorSharp:零基础制作DNF游戏补丁的终极指南
  • VBA文件操作避坑指南:从遍历搜索到批量创建,我踩过的雷你都别踩(含FSO对象详解)
  • Arduino-ESP32开发指南:如何快速上手ESP32物联网项目开发
  • 暴雨来了,武汉最强信创“地头蛇”
  • 计划订单数量调整避坑指南:BAPI调用时GSMNG与CAMNG比较逻辑详解
  • PvZWidescreen终极指南:3步让《植物大战僵尸》告别黑边,享受宽屏沉浸体验
  • 专业Unity游戏翻译解决方案:XUnity.AutoTranslator架构解析与实践指南
  • APKMirror客户端:安卓应用安全下载与管理的终极指南
  • 保姆级教程:用ORB-SLAM3处理自己的.mp4视频(从相机标定到CMake配置)
  • 抖音视频批量下载完整指南:如何快速保存喜欢的短视频内容
  • 2025最权威的AI科研助手实测分析
  • 开源机器人抓取新纪元:深度解析耶鲁OpenHand机械手硬件设计
  • 终极指南:如何在Linux上快速配置foo2zjs打印机驱动
  • 如何用CompressO免费压缩视频图片:开源跨平台终极压缩指南
  • 蓝牙领域中的带宽和宽带
  • 如何免费解锁专业级AI绘画:Fooocus一站式图像创作全攻略
  • 从POC到自动化修复:MCP 2026集成CI/CD流水线的7步落地框架(附Gitee私有化部署脚本+审计日志脱敏模板)