文章

文章

60 篇
  1. 智力的本质:找规律

    笔者有感而发,当做乐子看看 背景 又一次校招来临,每年这段时间都会有很多学生往好岗位挤 如果你有幸校招过,你会发现一个很奇怪的,或者已经奇怪到习以为常的事情:

  2. 语言的边界:从 SQL 注入到大模型安全的范式转移

    作为一名安全工程师,在处理漏洞的过程中,我始终认为安全的本质是对边界的定义与捍卫。而语言,正是构建这些边界的基石。 从早期的 SQL 注入到如今的大模型(LLM)Prompt Injection,表面上看是攻击手法的演变,实则是计算架构从确定性(Deterministic) 向 **概率性(Probabilistic)**迁移时,语言边界控制权的根本性丧失。

  3. URL 中的 # 号去哪了?从 Burp 抓包报错说起

    一、 问题背景 在最近的一次测试(实则几年前)中,我发现了一个有趣的现象,并用 Burp Suite 进行验证时产生了新的疑问: 浏览器的“隐形”行为:当我使用浏览器访问带有 # 的 URL 时,查看网络请求包(Network tab),发现浏览器发送给服务器的请求路径中,默认去掉了 # 及其后面的所有内容。 Burp 的“强制”行为:为了验证服务器对 # 的处理,我使用 …

  4. IDEA Structural Search

    Before All 在笔者学习Java反序列化链的时候,时常会碰到寻找合适类的问题,例如在学习Shiro550 CB链时,需要寻找一个类,需要同时满足3个条件:

  5. CommonsBeanutils1学习速记

    前置知识 TemplatesImpl中的字节码加载流程 1 2 3 TemplatesImpl.newTransformer() ->TemplatesImpl.getTransletInstance() ->TemplatesImpl._class[_transletIndex].newInstance() 其中 …

  6. 红黑树整理

    相关名词整理 发现之前的逻辑有点不对,重新整理一份 树 树是由节点(Node)和边(Edge)组成的有限集合,满足以下条件: 根节点(Root):存在且仅存在一个特定的节点,称为树的根节点。 子节点与父节点:除根节点外,每个节点通过一条边唯一地连接到一个称为其父节点的节点。 子树(Subtree):每个节点可以有零个或多个子节点,子节点对应的子树是互不相交的集合。 无环性:树中 …

  7. BST与AVL树学习

    因为看java内部库实现的时候,没看出来一些典型的算法,补补课相当于 别问为什么用python实现 二叉查找树 Binary Search Tree => BST 二叉查找树根节点的值大于其左子树中任意一个节点的值,小于其右子树中任意一节点的值,且该规则适用于树中的每一个节点。

  8. CISCN 2019 web writeup

    web1 题目源码链接 https://d4n-picture-database.oss-cn-beijing.aliyuncs.com/img/CISCN+2019+web1.zip 访问:http://172.28.76.89:8845/CISCN_2019_web1/ 得到提示,利用伪协议获取hint.php和index.php内容

  9. .htaccess 文件利用方式

    What’s .htaccess .htaccess文件是 Apache 中有一种特殊的文件,其提供了针对目录改变配置的方法,即在一个特定的文档目录中放置一个包含一条或多条指令的配置文件。此作用文件作用于此目录及其所有子目录。

  10. php exit 死亡绕过

    最近在复习一些内容,做记录,免得又忘了 Demo0 给出题目demo,如下: demo0.php 1 2 3 4 5 6 <?php show_source(__FILE__); $content = $_GET['content']; $data = $_GET['data']; $data = '<?php …

  11. PHP本体的C语言源码调试

    期望效果 比如某个php文件内容如下 1 2 3 4 5 6 7 8 9 10 11 12 <?php error_reporting(0); $strr = "<?php exit();"; $r = preg_replace('|[^a-z0-9A-Z+/]|s', '', $strr); …

  12. WSL 转移记录

    WSL导入/导出 安装好WSL2后,无需安装Ubuntu等发行版,直接导出导入即可,命令简记 1 2 3 4 5 6 # 导出 指定虚拟机 到 指定位置并指定命名 wsl --export Ubuntu2404 D:\Ubuntu2404.tar # 导入 # 指定导入后的虚拟机名字 指定导入后文件存储地 指定导入文件(导入虚拟机文件) 指定 WSL 版本 wsl …

  13. PHP Filter 伪协议实现细节

    在PHP中,关于编码转换,使用php://filter和iconv()进行编码转换有所不同 iconv 基本语法: 1 string iconv(string $in_charset, string $out_charset, string $str) 参数说明: $in_charset: 输入字符编码,即源字符串的编码。 $out_charset: 输出字符编码,即目标字符串 …

  14. PHP 转换过滤器

    PHP 过滤转换器 convert.base64* 包括 convert.base64-encode convert.base64-decode 使用这两个过滤器等同于分别用 base64_encode() 和 base64_decode() 函数处理所有的流数据。 设置参数 convert.base64-encode 支持以一个关联数组给出的参数。 如果给出了 …

  15. IDEA与Tomcat

    前情提要 IDEA 中,仅编写了一个.java文件即可部署一个接口,怎么做到的? 笔者使用Test.java源码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 …

  16. Tomcat目录结构学习

    Tomcat 基本信息暂时不作过多介绍了,本文聚焦于Tomcat的目录结构理解 目录结构一览 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 …

  17. JVM 运行时参数查询

    前情提要 紧接此文的前情提要 在找到对应端口对应的文件目录后,有点绝望,JDK 目录连上了我的知识点,却击碎了我的幻想 但是咱不是善于认输的人,有没有什么办法可以看到正在运行的java进程的相关配置参数或者环境变量呢? 答案:有的,所以如下 但是即使知道了环境变量,由于是通过案例通过Tomcat部署(移植到类中直接运行失败),所以也无法排除是否是Tomcat发起连接还是业务代码 …

  18. Windows 根据端口查找进程

    前情提要 由于有这个待办的存在,我将尝试去证明:JNDI配置后,与数据库通信层的连接代码是交给了 Tomcat,JBOSS 等完成 虽然可能没什么意义,但是有疑问想要自己解决不总是坏的 在Debug时,尝试通过通讯层面证明为Tomcat与Mysql通信 在抓包过程中,很遗憾,只能得到目的端口和来源端口信息(当然咯,网络层面通讯进行数据库查询带什么本地进程信息呢?),如下图 …

  19. 一些好用的 MarkDown 语法

    可折叠展开 1 2 3 4 5 6 7 8 9 10 11 12 <details><summary><font color="#FF0000" size="5">免责声明【必读】</font></summary> 本工具仅供学习和技术研究使用,不得用于任何商业或非法行为,否则后果自负。 …

  20. Java基础知识:LDAP

    What’s LDAP Lightweight Directory Access Protocol -> LDAP 直译:轻量级目录访问协议(Directory -> 又可译为电话簿),但是意义不准确 不管是目录还是电话簿,核心点为查找 即 Directory 服务内部的数据组织形式是树形结构,这样做的目的是方便查找。其最开始存在的目的是做白页、黄页类应 …

  21. Java基础知识:JNDI

    OK,又到了喜闻乐见的Java基础知识环节 What’s JNDI JNDI,即Java Naming and Directory Interface,直译为 Java命名与目录接口 Java表明了这个玩意儿大概率只在Java中存在

  22. Java基础知识:JPA

    What’s JPA JPA(Jakarta Persistence API)是一个规范,定义了Java应用程序中持久性的一组概念。JPA提供了一个对象关系映射(ORM)层,允许开发人员使用Java对象进行工作,而无需手动转换对象导向范式和关系数据库之间的差异。JPA实现如Hibernate和EclipseLink处理Java对象和数据库表之间的转换,使开发人员免 …

  23. Java基础知识:EJB

    What’s EJB EJB => Enterprise Java Beans 直译:企业 Java Beans EJB 的官方解释: 商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。 所谓:"业务逻辑" 我们注意到在EJB 的概念中主要提到的就是"业务逻辑"的封装,而这个 …

  24. Java基础知识:J2EE

    概念多且杂,且看且过 JAVA & J2EE Java和Java EE(也可称J2EE,其中的故事)是两个不同概念 Java不仅指一种语言,也可以指一种软件系统的流派 目前JAVA有三个平台:

  25. 编译原理-基本知识

    表格管理 作用:用来记录源程序的各种信息以及编译过程中的各种状况 与编译前三阶段有关的表格有:符号表、常数表、标号表、分程序入口表、中间代码表等 符号表 用来登记源程序中的常量名变量名、发数组名、过程名等,记录它们的性质、定义和引用情况

  26. 编译原理-目标代码生成

    目标代码生成 任务 把经过优化的中间代码转化成特定机器上的低级语言代码 目标代码的形式 绝对指令代码:可立即执行的目标代码。 汇编指令代码:汇编语言程序,需要通过汇编程序汇编后才能运行。 可重定位指令代码:先将各目标模块连接起来,确定变量、常数在主存中的位置,装入主存后才能成为可以运行的绝对指令代码。

  27. 编译原理-优化

    优化 任务 对前面产生的中间代码进行加工变换,以期在最后阶段能产生更为高效的目标代码。 原则:等价变换 主要关注:公共子表达式的提取、合并已知量、删除无用语句、循环优化等。 循环优化:将循环内的语句优化为必需语句 优化举例

  28. 编译原理-语义分析和中间代码生成

    语义分析和中间代码生成 任务 对语法分析识别出的各类语法范畴,分析其含义,进行和初步翻译,产生介于源代码和目标代码之间的一种代码。 分为两阶段工作: 对每种语法范畴进行静态语义检查 若语义正确,就进行中间代码的翻译 中间代码 中间代码形式有:四元式、三元式、逆波兰式 中间代码生成举例:

  29. 编译原理-语法分析

    任务 在词法分析的基础上,根据语言的语法规则,把单词符号组成的各类语法单位 语法规则 语言的规则,又称为文法:规定单词如何构成语法单位 语法单位 语法单位包括:短语、子句、语句、过程、程序 语法规则如何表示 BNF(巴科斯范式):A::=B|C -> 表示A定义为B或C 语法分析的方法 推导(Derive)和归约(Reduce) 推导 最左推导、最右推导 最右推导:每次 …

  30. 编译原理-词法分析

    关于 任务 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词 词法分析依照词法规则,识别出正确的单词,转换为统一规格,备用 单词 高级语言中有实在意义的最小语法单位,字符组成(关键字?) 包括: 基本字:void int float等 标识符:变量名,函数名等 整常数:例如 a*50 中的50 运算符:+ - * / =等 界限符:{} '' ; ()等 转换 …

  31. 编译原理

    编译程序的工作 词法分析 语法分析 语义分析和中间代码生成 优化 目标代码生成 上图中的语义分析一般来说会被融合进语法分析中

  32. Java自定义类加载器

    自定义类加载器的使用 根据前文,不管是Bootstrap ClassLoader还是ExtClassLoader等,这些类加载器都只是加载指定的目录下的jar包或者资源。如果在某种情况下,我们需要动态加载一些东西呢?

  33. Java ClassPath

    ClassPath是Java中一个重要的环境变量,弄懂他对于Java运行环境的理解有重大的帮助 ClassPath是什么 CLASSPATH直译过来是类路径,是Java环境配置中要设置的一个环境变量,就是.class文件的路径,表示JVM从哪里去寻找要运行的class文件,CLASSPATH = D:\java表示执行java命令时去D:\java目录中去找需要被执行的 …

  34. Java默认类加载器的加载路径

    前文有提到Java的默认ClassLoader有三种,且三种的ClassLoader会加载不同的Java类。 他们加载的类的路径在哪? 是否可以进行设置? 本文做一个初步探讨 全量输出 在不配置任何参数的情况下,执行MainTest.java查看默认路径 MainTest.java内容如下

  35. Java字节码与类加载器

    本章深入了解Java字节码以及加载Java字节码的类加载器相关姿势! Java字节码 Java 在刚刚诞生之时曾经提出过一个非常著名的口号: “一次编写,到处运行(write once,run anywhere)”,这句话充分表达了软件开发人员对冲破平台界限的渴求。“与平台无关”的理想最终实现在操作系统的运用层上: 虚拟机提供商开发了许多可以运行在不同平台上的虚拟机,这些虚拟机 …

  36. 24-11-06 有感

    最近其实学到的东西越来越多了,但是不知怎的,写文章的欲望却变得低迷了起来,不知是因为什么 也许是因为其中部分知识算的上是已经学过了,如果重复写的话会感觉“浪费时间”吧

  37. Windows 右键菜单

    Windows 多级右键菜单基础 修改的键与项 Win10鼠标右键菜单管理分为三种情形:右键文件夹、文件以及右键空白区域 右键空白区域(分为桌面空白区域和其他文件夹下空白区域) 右键文件夹 右键文件(分为所有文件和某类型文件两种)

  38. Windows 注册表基础

    Windows 注册表基础 Windows注册表的本质 官方描述 注册表是一个分层数据库,其中包含对 Windows 的操作以及 Windows 上运行的应用程序和服务至关重要的数据。 数据以树格式进行结构化。 树中的每个节点称为 键。 每个键可以同时包含 子项 和数据条目(称为 值)。

  39. CC6 Demo 学习

    CC6链 CC6 Demo学习,以及踩坑记录 CC6 Demo CC6能够解决CC1高版本无法利用的问题,先看看CC6链 调用栈 1 2 3 4 5 6 7 8 9 10 11 12 13 /* Gadget chain: java.io.ObjectInputStream.readObject() java.util.HashMap.readObject() …

  40. 经济学十大原理

    First of All 什么是教育 Education Is What Remains After You Have Forgotten Everything You Learned In School 在你忘记所有你在学校中学到的知识后,剩下的东西,就是教育 经济学十大原理 十大原理分成三类问题 How People Make Decisions(人们如何作出决策) …

  41. 经典CC1链构造

    假设读者已经了解HashMap版非经典CC1链的构造原理。 如此提到了非经典版的CC1链,代表经典版CC1链和HashMap版有一定出入。 经典版CC1链使用的Map类为LazyMap而非HashMap

  42. Java代理模式

    代理模式 代理模式是常用的java设计模式。 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是 …

  43. 程序的设计模式

    设计模式 设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

  44. How to Ask Questions The Smart Way

    如侵秒删 提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文版版权为 Eric S. Raymond, Rick Moen 所有。 原文网址 …

  45. CC1Demo

    假设读者已经掌握(笔者博客里的前置文章内涉及技术的)基础知识 本文章目的是分析CC链之1 Demo,以及补充相关前置知识,并尝试解决CC1链必要性问题,即CC1的必要路径和可选路径

  46. 二次URL解码小技巧

    FYI. file_put_content()会默认进行一次urldecode,php接收时也会默认进行一次 此为默认的二次URLdecode场景 常规二次UrlDecode 1 %2569 -> %69 -> i 小技巧 1 %6%39 -> %69 -> i 使用场景 bypass WAF 对于 %25 的过滤

  47. Rmi Study

    什么是RMI RMI (Remote Method Invocation) 模型是一种分布式对象应用,使用 RMI 技术可以使一个 JVM 中的对象,调用另一个 JVM 中的对象方法并获取调用结果。这里的另一个 JVM 可以在同一台计算机也可以是远程计算机。因此,RMI 意味着需要一个 Server 端和一个 Client 端。 Server 端通常会创建一个对象,并使之可以被 …

  48. About_u3p

    什么是u3p文件 .u3p 文件是存储在U3智能驱动器(一种特殊类型的USB闪存驱动器,包括U3 Launchpad平台)上的便携式应用程序。它包含程序可执行文件和配置数据。如果需要在计算机上运行某些文件,请在计算机上运行一些文件。

  49. Vscode Windows 远程连接

    前言 笔者目前有两个电脑,一个A在家(高性能),一个B在公司(较低性能),如何同步两个电脑的环境一直是一个问题,较低性能的笔记本写文档完全没问题,但是如果涉及一些工具编译,多台虚拟机同时使用,不可。上传github需要push,但是笔者并没有良好的push习惯。相反,只需要git作为存储单元的笔者深受其git版本控制的困扰,git方案失败,有向日葵这样的远控软件但是远控在免费使 …

  50. BlogToHugo

    前言 Hugo 搭建其实和hexo差不多,但是介于作者有幸尝试过hexo编译大量文章的经历,可以说hexo的性能已经无法满足我对个人博客的向往,于是乎转Hugo,Hugo 基于Go开发,效率方面毋庸置疑,但是由于该工具出现时间短暂,目前参考资料少,所以笔者在这通过搭建做一些总结

  51. Go Study

    Go学习难点记录与解决(希望能解决) 混淆点 1.Go的包导入 导入本质,导入顺序,依赖顺序以及导入优先级,默认路径,为什么是这个默认路径,如何结合默认路径设计项目结构

  52. VScode+Docker+Python+Debug安装指南

    本文记录VScode Docker Python Debug 相关设置已经遇见的问题 为何 日益增多的框架和漏洞学习中,VulDB一键搭建成为安全研究福音。为更好地跟踪Payload利用路径,调试成为必不可少的一步,但VulDB以Docker为基石,随之而来只能选择非本地搭建而使用现有的Docker进行远程调试,本文记录VScode Docker Python Debug 相关 …