<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yeshen4328的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yeshen4328</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yeshen4328]]></copyright><item><title><![CDATA[tcache attack]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/121039574</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/121039574</guid><author>yeshen4328</author><pubDate>Mon, 01 Nov 2021 17:06:52 +0800</pubDate><description><![CDATA[tcache attack
tcache double free
double free可以通过对同一块内存free两次，实现任意地址写。当libc版本在2.26以上时，free的块优先放入tcache，malloc也优先从tcache中取，性能更好。但是安全检查变弱了。
static void
tcache_put (mchunkptr chunk, size_t tc_idx)
{
  tcache_entry *e = (tcache_entry *) chunk2mem (chunk);
  ass]]></description><category></category></item><item><title><![CDATA[Javisoj_level6_x64_writeup]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/109082636</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/109082636</guid><author>yeshen4328</author><pubDate>Wed, 14 Oct 2020 20:28:29 +0800</pubDate><description><![CDATA[freenote writeup
目的

学习pwn基本套路
学习堆相关漏洞和利用：unlink、堆的结构、free的流程

题目
笔记本题目：

4个重要选项如上所示，选项代码如下所示：

InitNote：

初始化整个note的内存，共0x1810字节，前16字节为头部信息，分别是最大note数（note_buf: 0x100），当前note数（note_buf+8: 0）；
接下来初始化每个note的结构，每个note 24字节，第一个8字节（note_buf + 24*i + 16）表示该note]]></description><category></category></item><item><title><![CDATA[Pwn5-bugku]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/109008029</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/109008029</guid><author>yeshen4328</author><pubDate>Sun, 11 Oct 2020 09:39:44 +0800</pubDate><description><![CDATA[pwn5
基础知识


格式化字符串漏洞：
在c/c++的格式化输出中，使用的是printf函数，它的参数如下所示：
int printf(const char *format, ...);

使用方式如下：
char buf[10] = {};
read(0,buf,9);
printf("%s",buf);

如果直接使用printf输出buf的话，则存在格式化字符串漏洞：
char buf[10] = {};
read(0,buf,9);
printf("%s",buf);

原理：因为printf会]]></description><category></category></item><item><title><![CDATA[Android进程间通信—IPC Binder协议总结]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/106730124</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/106730124</guid><author>yeshen4328</author><pubDate>Mon, 15 Jun 2020 10:06:37 +0800</pubDate><description><![CDATA[Android进程间通信—IPC Binder协议
背景
为了解决Android不同应用间数据传输以及远程函数调用的需求，比如应用A要给应用B发送它的状态等，或者A要调用B的函数等，android提供了一套IPC通信工具（协议），binder。
名词解释
IPC：Inter-Process Communication，进程间通信，用于进程间数据传输。
RPC：Remote Procedure Call，远程调用，用于进程间函数的调用。
Binder：一种进程间通信/远程调用的工具。
原理
下面以服务注册、检]]></description><category></category></item><item><title><![CDATA[ctf.bugku ctf题目详解——pwn2]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/106363576</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/106363576</guid><author>yeshen4328</author><pubDate>Tue, 26 May 2020 20:26:41 +0800</pubDate><description><![CDATA[ctf.bugku ctf题目详解——pwn2
题目

程序分配了一个栈上的变量s，长度为0x30，并一开始置0.
9行开始从外部读取0x100的数据到s中，由此可见此处存在一个栈溢出。
同时使用ida打开程序之后发现还存在一个get_shell的函数：

于是我们需要想方法利用溢出来调用这个get_shell函数。
x64函数调用规则
解题之前我们先学习下linux x64的函数调用规则。
x64机器在调用某个函数前，比如int func(int a, int b, int c, int d, int e]]></description><category></category></item><item><title><![CDATA[支付框架常见攻击面]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/105257921</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/105257921</guid><author>yeshen4328</author><pubDate>Sat, 04 Apr 2020 18:17:10 +0800</pubDate><description><![CDATA[支付框架业务流程以及常见攻击面
主流支付框架
目前主流的支付应用有支付宝、微信支付、银联和百度支付，众多应用都集成了它们一种或者多种支付功能。在整个支付流程中包含一下几个部分（可能不同版本有些不同）：支付应用服务器（cashier server，cs）、电商应用（merchant app，MA），电商应用服务器（merchant server，MS），以及支付应用SDK（TP-SDK）。
模型1:...]]></description><category></category></item><item><title><![CDATA[C++特性学习——命名空间（namespace）]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/105025725</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/105025725</guid><author>yeshen4328</author><pubDate>Sun, 22 Mar 2020 12:20:59 +0800</pubDate><description><![CDATA[C++特性学习——命名空间（namespace）
namespace是干什么的
我们都知道编程语言中每个变量和函数都是自己的作用域，比如
int a = 1;
int main(void)
{
	inb b = 0;
	...
}

a的作用域就是全局，所有函数都能使用，b的作用域是main函数内，只有main函数内才能使用，超出范围就提示变量未定义；
对于一些依赖包，他们通常都有很多变量，不同依...]]></description><category></category></item><item><title><![CDATA[Https抓包总结]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/102537492</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/102537492</guid><author>yeshen4328</author><pubDate>Sun, 13 Oct 2019 21:30:07 +0800</pubDate><description><![CDATA[使用抓包工具burpsuite、fiddler等进行抓包，方法和原理类似，下面一burpsuite为例，https通信时，客户端需要获取服务器的证书进行验证，直接使用burpsuite抓取https的请求，会出现ssl协商错误。因为在抓包工具抓包过程中，抓包工具是作为一个中间人进行数据包拦截和转发，当进行https请求时，需要服务器的证书验证通过才能信任，同时正文的解密密钥也是通过证书来协商的，而...]]></description><category></category></item><item><title><![CDATA[协同过滤推荐]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/82351999</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/82351999</guid><author>yeshen4328</author><pubDate>Sun, 13 Oct 2019 18:32:38 +0800</pubDate><description><![CDATA[协同过滤推荐

协同过滤算法用于给用户推荐物品（商品、音乐、新闻等等），主要分为基于用户的推荐和基于物品的推荐。

推荐算法涉及到两个业务对象：用户和物品。我们需要弄清楚推荐的目的：推荐是为了给用户推荐他想要的物品，为了描述用户，我们需要获取用户画像，比如用户的年龄、性别、职业、收入、偏好等等，同时为了描述物品，需要对物品进行描述。

1. 基于用户的推荐

首先统计每个用户所关联的物品，得到用户...]]></description><category></category></item><item><title><![CDATA[Oauth2.0过程介绍]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/102530499</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/102530499</guid><author>yeshen4328</author><pubDate>Sun, 13 Oct 2019 18:30:31 +0800</pubDate><description><![CDATA[背景/意义

现在很多网站以及应用都能使用第三方账号登陆，例如在某个网页登陆QQ、微信、支付宝等，如果直接输入账号密码来进行账号登陆是不安全的，因为账号密码会传输到这个网页的后台，如果不是特别信任它，否则这样做是很不安全的。oauth就是为了让网页或者应用能够安全地使用第三方账号登陆，第三方账号的验证服务器它会给网页后台办法一个access token，网页服务器利用这个token来访问第三方账号...]]></description><category></category></item><item><title><![CDATA[HTTPS证书发放过程]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/83831434</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/83831434</guid><author>yeshen4328</author><pubDate>Thu, 08 Nov 2018 21:01:51 +0800</pubDate><description><![CDATA[1. HTTPS概述
https是由http加上ssl的来的，之前一直使用的http通信过程直接用的明文，安全性极低，攻击人可以很容易窃取通信内容，同时冒充服务器和用户通信，窃取用户隐私数据。为了保证安全性，https引入了认证机制以及加密的通信。
2.HTTPS过程详解
首先我们要知道https的存在是为了证明和浏览器通信的服务器是合法的，同时保证通信过程不被第三方窃取。所以https重点要做的...]]></description><category></category></item><item><title><![CDATA[LeetCode 894. All Possible Full Binary Trees]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/82668887</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/82668887</guid><author>yeshen4328</author><pubDate>Wed, 12 Sep 2018 21:48:24 +0800</pubDate><description><![CDATA[题目描述：

A full binary tree is a binary tree where each node has exactly 0 or 2 children.

Return a list of all possible full binary trees with N nodes.  Each element of the answer is the root node of o...]]></description><category></category></item><item><title><![CDATA[LeetCode 898. Bitwise ORs of Subarrays]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/82563040</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/82563040</guid><author>yeshen4328</author><pubDate>Sun, 09 Sep 2018 22:43:39 +0800</pubDate><description><![CDATA[We have an array A of non-negative integers.

For every (contiguous) subarray B = [A[i], A[i+1], ..., A[j]] (with i &amp;lt;= j), we take the bitwise OR of all the elements in B, obtaining a result A[i] |...]]></description><category></category></item><item><title><![CDATA[迪杰斯特拉算法]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/82526283</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/82526283</guid><author>yeshen4328</author><pubDate>Sat, 08 Sep 2018 20:05:26 +0800</pubDate><description><![CDATA[迪杰斯特拉算法

迪杰斯特拉算法用来计算图中某一点到其他点的最短距离，这个图可以是加权，也可以是无权的，距离指的是从一点到其它点所经过的边的权重和；

假设现在有一个加权无向图，我们要求节点1到其他点的最短距离：



算法流程

初始化图arr：用一个邻接矩阵来表示一张图，矩阵元素为节点i到节点j的边权重，初始化时，如果i，j有一条边，则初始化为便权重，否者置为Integer.MAX_VALUE...]]></description><category></category></item><item><title><![CDATA[SQL_各种join解析（inner join，left join，right join，full join）]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/80849259</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/80849259</guid><author>yeshen4328</author><pubDate>Fri, 29 Jun 2018 13:47:34 +0800</pubDate><description><![CDATA[刚开始学sql的时候，碰到join语句一脸蒙蔽，搞不清各种join都是干什么，最近在跑模型，有点闲工夫写博客，就记录一下学习join的过程。join是用于连接两个或者多个表的语句，注意，这里的“连接”并不是你想象的直接把两个表拼起来，而是按照一定的规则来连接。它基本的语法是：select colum_name 
from table1
join table2
on condition其中join关...]]></description><category></category></item><item><title><![CDATA[机器学习(3)-西瓜书-逻辑回归]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/80681322</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/80681322</guid><author>yeshen4328</author><pubDate>Thu, 14 Jun 2018 20:16:08 +0800</pubDate><description><![CDATA[1]]></description><category></category></item><item><title><![CDATA[机器学习(2)-西瓜书-梯度下降]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/80571647</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/80571647</guid><author>yeshen4328</author><pubDate>Tue, 05 Jun 2018 10:24:25 +0800</pubDate><description><![CDATA[前言]]></description><category></category></item><item><title><![CDATA[机器学习(1)-西瓜书-线性回归]]></title><link>https://blog.youkuaiyun.com/yeshen4328/article/details/79867683</link><guid>https://blog.youkuaiyun.com/yeshen4328/article/details/79867683</guid><author>yeshen4328</author><pubDate>Mon, 04 Jun 2018 19:15:00 +0800</pubDate><description><![CDATA[前言        老实说，西瓜书作为新入门的同学来说，并不是很好的一个选择，因为西瓜书以总结的方式介绍了各种机器学习的模型和算法，公式推导过程很多地方都是一笔带过，不利于新手入门，所以刚入门的还是去看网易公开课的机器学习视频。对于一些有一定机器学习基础的同学来说，这本书看起来效果更好。同时，在看西瓜书的时候并不是一定要按照顺序看， 可以根据自己的需求，找合适的内容看。  这篇blog主要介绍西瓜...]]></description><category></category></item></channel></rss>