<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Just for funnnnnnnnnnnn]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jlu16</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jlu16]]></copyright><item><title><![CDATA[incaseformat样本详细分析（附样本下载）]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/112695138</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/112695138</guid><author>jlu16</author><pubDate>Sat, 16 Jan 2021 11:15:51 +0800</pubDate><description><![CDATA[incaseformat样本详细分析
注：本文首发于我的博客：http://www.hupeiwei.com
incaseformat病毒近日爆发，影响了不少主机。这么一个古老的病毒能够造成这么大的影响，令人感到意外。我从微步在线上下载了样本进行分析。需要注意的是，incaseformat有两个在野版本，详见https://www.52pojie.cn/thread-1351233-1-1.html。我分析的应该是原始版本，但是两个版本除了Sysutils::DateTimeToTimeStamp库函数所使]]></description><category></category></item><item><title><![CDATA[程序的生成与运行]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/112694671</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/112694671</guid><author>jlu16</author><pubDate>Sat, 16 Jan 2021 11:10:58 +0800</pubDate><description><![CDATA[程序的生成与运行
注：本文首次发布于我的博客：http://www.hupeiwei.com
这篇文章里，我将介绍一个程序从源码到内存中运行的整个过程。这涉及到很多方面的知识，如有错误还请读者斧正。文章将按照如下结构进行组织：

高级程序设计语言、汇编语言、机器码
预处理、编译、链接、汇编

预处理
编译
链接
汇编


程序的加载
从反汇编看程序的运行

高级程序设计语言、汇编语言、机器码
在英语中有a-z这26个字母，一个孩子从最基本的字母开始学起。字母本身没有什么含义，但当它们组合起来，就成了可以描述]]></description><category></category></item><item><title><![CDATA[Reasons for failing to find target api using codeql]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/107874408</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/107874408</guid><author>jlu16</author><pubDate>Sat, 08 Aug 2020 08:52:34 +0800</pubDate><description><![CDATA[本文原载于我的博客 http://www.hupeiwei.com

As a new practical tool to search bugs in target programs, codeql is more and more popular among software security researchers. A crucial step using codeql is to find target api, then you can define your own violation che]]></description><category></category></item><item><title><![CDATA[Linux下软件编译常见问题指南（为什么某个源代码文件没有生成目标文件）]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/107874359</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/107874359</guid><author>jlu16</author><pubDate>Sat, 08 Aug 2020 08:47:33 +0800</pubDate><description><![CDATA[本文原载于我的博客 http://www.hupeiwei.com

进行安全研究时，可能发现代码中的vuln.c文件存在漏洞；可在对程序编译后，却没有发现它的目标文件（如 vuln.o），影响下一步探索，这是为什么呢？

在多数情况下，这是因为目标代码是程序中的插件，或者说一个模块。比如，一个程序的数据库存储可能支持sqlite、mysql，但是默认是使用mysql，那么和sqlite相关的代码可能就不被编译，这就造成了没有生成目标文件的问题。

该如何使得目标代码被编译呢？Linux常见的程序编译方式有]]></description><category></category></item><item><title><![CDATA[Linux下软件编译常见问题指南（编译过程）]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/107874311</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/107874311</guid><author>jlu16</author><pubDate>Sat, 08 Aug 2020 08:41:37 +0800</pubDate><description><![CDATA[本文章原载于我的博客 http://www.hupeiwei.com

在Linux下使用诸如apt、pacman和yum这样的软件管理工具安装软件比较简单，往往一条命令就足够了。但是，如果想安装一个旧版本软件进行测试与研究，或者是一个比较冷门的软件，就需要用户获取源代码从头进行编译。前一段时间我积累了许多这种经验，因此本篇文章从实用的角度描述编译时可能出现的问题及解决办法。
在自己开始编译源码前，首先要阅读软件给出的相关说明。它们往往在README或者INSTALL文件中，对软件所依赖的包、编译过程进行一]]></description><category></category></item><item><title><![CDATA[我的保研之路-哈工大计算机，中科院信工所，复旦大数据学院]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/102458303</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/102458303</guid><author>jlu16</author><pubDate>Wed, 09 Oct 2019 12:03:06 +0800</pubDate><description><![CDATA[托高中的福，在本科读了一个保研率还算可以的学校。在大一的时候我挺注重专业课的学习，系名次比较靠前；大二与大三我则改变策略—平日里以兴趣为指向进行和计算机有关的“瞎搞”，在考试前两周再集中时间复习。这三年的本科学习使我意识到，如果所处专业保研率还可以(不低于10%)，在最后能够取得保研资格其实是一件轻而易举的事情。我也不知道这是对期末考试试卷的讽刺，还是对保研资格评定的讽刺。
对于“瞎搞”，不同人有...]]></description><category></category></item><item><title><![CDATA[bugku—INSERT INTO注入解答]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/86264633</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/86264633</guid><author>jlu16</author><pubDate>Thu, 10 Jan 2019 23:53:18 +0800</pubDate><description><![CDATA[本来不打算单独的ctf题目成文，但是这个题写payload快看花我的眼睛了，不写一篇记录一下代码对不住我的眼睛。
error_reporting(0);

function getIp(){
$ip = '';
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$i...]]></description><category></category></item><item><title><![CDATA[设计模式—职责链(Chain of Responsibility)]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/83827269</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/83827269</guid><author>jlu16</author><pubDate>Wed, 07 Nov 2018 17:01:19 +0800</pubDate><description><![CDATA[如果你有Web方面的经验，在JavaScript中的事件流、Java Web中的过滤器，其实都是职责链模式的体现。
职责链模式可以这么来形容。A、B、C三个人去参加一个解题比赛，但是A更擅长数学问题，B更擅长理化问题，C更擅长文史问题。于是他们决定这样做：每接到一道题，A先阅读，如果是数学题A解答，否则传给B；B阅读后如果发现是理化题，则B解答，否则传给C来解答。这样A-&amp;gt;B-&amp;gt;C就构...]]></description><category></category></item><item><title><![CDATA[渗透小工具—对子域名爆破结果进行有效性验证和内容抽取]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/83239503</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/83239503</guid><author>jlu16</author><pubDate>Sun, 21 Oct 2018 10:18:09 +0800</pubDate><description><![CDATA[在渗透过程中，主站安全性往往比较好，所以要爆破子域名并试图从旁站开始下手。常用的获取子域名的工具有subDomainBrute和Layer子域名挖掘机，但是这两个工具的结果只是把域名及IP导出，并不知道是否能够连通、该子域名对应的网站内容是什么。一般的站点子域名往往能达到几十个，这时候一个一个手动去试太麻烦了，于是我写了下面这个脚本(Python3)，分享给大家。
#coding=utf-8

&quot;...]]></description><category></category></item><item><title><![CDATA[Web安全中的业务安全问题]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/83065203</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/83065203</guid><author>jlu16</author><pubDate>Mon, 15 Oct 2018 21:35:23 +0800</pubDate><description><![CDATA[今天下午看完了《业务安全实战指南》，是一本2018年的新书。这本书包含的业务安全内容感觉挺全的，不过编排并不好，很多地方都有重复；应该是不同作者写了不同章节，但是事先没有分的太清楚。
我将结合以往知识与这本书的内容总结一下Web安全中的业务安全问题。
业务安全问题给我的最大感觉就是：漏洞本身技术含量并不高，关键是处理逻辑是否足够严密。我想大致可以将导致业务漏洞的原因分为以下两类：1.过于信赖客户端...]]></description><category></category></item><item><title><![CDATA[设计模式—享元模式]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/83045649</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/83045649</guid><author>jlu16</author><pubDate>Sun, 14 Oct 2018 11:23:27 +0800</pubDate><description><![CDATA[享元模式(Flyweight)是一种结构型设计模式，它的出现是为了在使用大量细粒度对象时节省空间。在使用大量细粒度对象时，它们彼此之间往往有所相同，又有所不同。比如在一个PPT文档中，可能多处出现了“A”这个字母。它们之间的共同处是字形一样，都是A；不同是颜色不同，有的地方字体颜色为黑，有的地方为灰。
我们把这些对象之间相同的地方抽象出来称为“内蕴状态”，不同的地方称为“外蕴状态”。在使用享元模式...]]></description><category></category></item><item><title><![CDATA[设计模式—门面模式]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/83045186</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/83045186</guid><author>jlu16</author><pubDate>Sun, 14 Oct 2018 10:39:36 +0800</pubDate><description><![CDATA[门面模式(Facade)是结构型设计模式，它的作用是为客户端提供一个简单易用的接口，统一执行一些功能；当然，客户端也可以不使用它，自己去对这些功能进行细致的操作与控制。
比如我们现在的手机照相，通常有一个自动(Auto)模式，适合于不太会设置光圈对比度之类东西的用户使用，但是它的手动模式则适合高级用户使用，用户可以自己细致操作每一个步骤，代价是使用更繁琐。这里的自动模式就是一个门面。
又比如在公司...]]></description><category></category></item><item><title><![CDATA[设计模式—装饰器模式]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/83008770</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/83008770</guid><author>jlu16</author><pubDate>Thu, 11 Oct 2018 10:35:02 +0800</pubDate><description><![CDATA[当你去买手抓饼时，可以选择最基础的，也可以选择加蛋的，加肠的，或者加肠加蛋的。假如我们在编程中遇到了类似的问题：已经有了一个最基础的手抓饼类(它继承了手抓饼接口)，如何修改代码使得可以创建加肠版本的手抓饼或者加蛋版本的手抓饼呢？
也许最简单的直觉是再创建两个类继承手抓饼接口，但是这样还要在这两个版本中把基础手抓饼制作代码再重复一遍，然后进行加肠或加蛋；但其实我们只需要额外添加肠或者添加蛋的代码就够...]]></description><category></category></item><item><title><![CDATA[数据库(1)—关系数据库简介]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82924863</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82924863</guid><author>jlu16</author><pubDate>Tue, 02 Oct 2018 15:47:26 +0800</pubDate><description><![CDATA[也许你经常听到SQL server，Oracle，MySQL等名词，人们将它们统称为数据库。这些服务软件的完整名称其实叫做数据库管理系统(Database-Management System,DBMS)，它由数据库(即一些数据的集合)与用来对数据库进行管理(比如访问、创建、删除、修改)的程序组成。
基于不同的数据模型，数据库又被分为很多种。目前最常见的，被广泛实现的是关系数据库，它基于关系模型。比...]]></description><category></category></item><item><title><![CDATA[设计模式—组合模式(Composite)]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82891346</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82891346</guid><author>jlu16</author><pubDate>Fri, 28 Sep 2018 23:02:56 +0800</pubDate><description><![CDATA[组合模式是一种结构型设计模式，它适合来描述递归组合的对象结构。这到底是什么样的结构？
举个例子，有如下计算式：3×(1+2×4)，它由数字3和计算式(1+2×4)组成，而(1+2×4)又由数字1和计算式2×4组成，2×4由数字2和4组成。又比如一个文件夹，里面可以同时包含文件和文件夹，而这个文件夹里又可以包含文件和文件夹，一直递归下去。
其实对于这些结构可以用树结构来表示：

那些可以再递归下去的...]]></description><category></category></item><item><title><![CDATA[方便的显示Apache日志更改后的新信息]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82823701</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82823701</guid><author>jlu16</author><pubDate>Sun, 23 Sep 2018 17:57:20 +0800</pubDate><description><![CDATA[看Apache的错误日志快看瞎我的眼睛了，因为如果直接打开看的话需要辨别如下信息：

哪些行是我这次的新信息
在新信息中错误/警告/提示的原因，相对应的文件名以及行数位置

为了更方便浏览日志，有了下面这段简单的脚本。
它比较此次运行和上次运行中日志文件的不同并以便于观察的格式列出相应信息（通过集合去除重复的提示信息，比如不同时间造成的错误信息但它们是相同的错误）。
参数1-&amp;amp;gt;查看错误信息
...]]></description><category></category></item><item><title><![CDATA[解决 MySQL 的 ERROR 1698 (28000): Access denied for user 'root'@'localhost']]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82809937</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82809937</guid><author>jlu16</author><pubDate>Sat, 22 Sep 2018 09:21:29 +0800</pubDate><description><![CDATA[相信很多刚刚在Linux上装MySQL的用户都会遇到这个问题，到底该怎么解决呢？我在stackoverflow上查找到了答案（我使用了方法1并且十分有效），搬运过来顺便翻译成中文。
原文地址：https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

问题大致...]]></description><category></category></item><item><title><![CDATA[设计模式—单件模式（Singleton）]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82792687</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82792687</guid><author>jlu16</author><pubDate>Thu, 20 Sep 2018 19:59:22 +0800</pubDate><description><![CDATA[单件模式是最简单的创建型设计模式，它通过合理的权限控制使得某一个类只能拥有一个实例。使用单件模式注意三个重点部分：私有或保护的构造方法（防止实例被随意创建），类内静态的实例（也是唯一的实例），类内静态的全局访问点（用于获得该唯一实例）。为什么唯一实例和全局访问点要用静态的呢？很明显，如果使用非静态的全局访问点，要调用该方法首先要创建一个实例，然而在类外实例是无法被创建的（受到构造方法的限制），所以...]]></description><category></category></item><item><title><![CDATA[设计模式—原型模式]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82730178</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82730178</guid><author>jlu16</author><pubDate>Sun, 16 Sep 2018 21:51:57 +0800</pubDate><description><![CDATA[原型模式是一种创建型的设计模式，简单的说，就是通过克隆一个已有的对象来获取想要的对象。通过这种方式，一方面使得对象的获得变得简单直接（比如不必再次设置相关属性）；一方面实现了良好的封装（使用者对新对象是如何克隆出来的没必要知道）；而且在一些编程语言比如Java中，通过重写Object的clone方法，可以更高效的创建新对象（此时的对象克隆生成新对象与普通生成新对象不同，它不执行构造函数，直接对内存...]]></description><category></category></item><item><title><![CDATA[设计模式—生成器模式（建造者模式）]]></title><link>https://blog.youkuaiyun.com/jlu16/article/details/82685265</link><guid>https://blog.youkuaiyun.com/jlu16/article/details/82685265</guid><author>jlu16</author><pubDate>Thu, 13 Sep 2018 11:25:23 +0800</pubDate><description><![CDATA[生成器模式是一种创建型设计模式，它把对象的创建步骤抽象成生成器，并且可以通过指导类（director）对所有生成步骤的先后顺序进行控制。客户端使用指导类并传入相应的生成器，通过指导类的接口便可以得到相应的对象。

以我的理解看，生成器模式中的生成器被用来对生成对象的每一个步骤自身进行控制，比如要产生一辆汽车（最终对象），那么玻璃是用普通玻璃还是防弹玻璃（生成最终对象的一个步骤）。而指导类主要用来设...]]></description><category></category></item></channel></rss>