<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[beixingyuan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/beixingyuan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; beixingyuan]]></copyright><item><title><![CDATA[通过wrapper（包装器）使不同启动方式下目标程序的栈布局一致]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/150918260</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/150918260</guid><author>beixingyuan</author><pubDate>Wed, 27 Aug 2025 10:03:08 +0800</pubDate><description><![CDATA[摘要 本文分析了不同启动方式（pwndbg、gdb、pwntools、bash）下程序栈布局不一致的问题，指出环境变量继承和argv路径差异是主要原因。通过实验展示了各启动方式的栈布局差异，并提出使用Linux的env包装器统一环境变量设置，以及采用绝对路径运行程序的解决方案。测试结果表明，该方法能有效统一不同启动方式下的栈布局，为调试和漏洞利用提供了稳定环境。]]></description><category></category></item><item><title><![CDATA[CVE-2012-0809 sudo格式化字符串漏洞分析及利用]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/149426476</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/149426476</guid><author>beixingyuan</author><pubDate>Thu, 17 Jul 2025 17:30:08 +0800</pubDate><description><![CDATA[摘要 本文分析了CVE-2012-0809漏洞，这是sudo 1.8.0~1.8.3p1版本中的一个高危格式化字符串漏洞。该漏洞源于src/sudo.c中的sudo_debug函数，当通过-D参数启用调试模式时，程序会将用户可控的程序名直接拼接到格式化字符串中，导致漏洞发生。攻击者可通过创建特殊命名的软链接并执行，利用格式化字符串漏洞覆盖free函数的GOT表项为execl函数地址，最终实现任意代码执行和权限提升。文章详细介绍了漏洞复现环境配置、触发方式、漏洞代码分析及利用思路，展示了如何通过控制程序名参数]]></description><category></category></item><item><title><![CDATA[CVE-2012-4426 mcrypt格式化字符串漏洞分析及利用]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/149346671</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/149346671</guid><author>beixingyuan</author><pubDate>Tue, 15 Jul 2025 09:59:40 +0800</pubDate><description><![CDATA[摘要： CVE-2012-4426是mcrypt加密扩展库中的一个格式化字符串漏洞，影响2.6.8及以下版本。当使用--no-openpgp参数处理不存在的文件时，程序会直接将用户输入拼接进错误信息并传递给fprintf函数，导致格式化字符串漏洞。利用该漏洞可修改mcrypt_module_open的GOT表项为execlp函数地址，从而在执行后续文件处理时实现任意命令执行。]]></description><category></category></item><item><title><![CDATA[CVE-2017-13089漏洞利用分析]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/145875484</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/145875484</guid><author>beixingyuan</author><pubDate>Wed, 26 Feb 2025 15:45:55 +0800</pubDate><description><![CDATA[在 wget 版本小于1.19.2 的情况下，函数中存在因类型转换导致的缓冲区溢出漏洞。]]></description><category></category></item><item><title><![CDATA[ACM&IEEE期刊会议论文关键词爬虫]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/128921093</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/128921093</guid><author>beixingyuan</author><pubDate>Tue, 07 Feb 2023 16:25:37 +0800</pubDate><description><![CDATA[ACM&IEEE期刊会议论文关键词爬虫]]></description><category></category></item><item><title><![CDATA[【机器学习】【C++】基于免疫算法/遗传算法的连通图最短哈密顿回路求解]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/127917097</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/127917097</guid><author>beixingyuan</author><pubDate>Fri, 18 Nov 2022 10:48:33 +0800</pubDate><description><![CDATA[基于c++，使用免疫算法/遗传算法求解TSP问题，支持记录迭代过程并绘图]]></description><category></category></item><item><title><![CDATA[C# asp.net 数据集编译失败，OracleDataAdapter冲突]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/126859345</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/126859345</guid><author>beixingyuan</author><pubDate>Wed, 14 Sep 2022 20:13:43 +0800</pubDate><description><![CDATA[在%ORACLE_HOME%\client\Administrator\product\12.1.0\client_1\odp.net\bin\4\下找到同名文件，换成这个文件。2.aspx控件的配置数据源里，选择业务对象的下拉框里什么都没有。点开解决方案的引用，找到DataAcess.dll。]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第五十五题&第四十五题：跳跃游戏&跳跃游戏（二）]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/126786105</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/126786105</guid><author>beixingyuan</author><pubDate>Fri, 09 Sep 2022 17:21:53 +0800</pubDate><description><![CDATA[令{nums[0]}为区域X0，定义区域Xn为“从区域Xn-1中所有元素出发，能到达的元素集合与区域Xn-1的差集”。]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第五十题：Pow(x, n)_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/126730194</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/126730194</guid><author>beixingyuan</author><pubDate>Tue, 06 Sep 2022 18:10:48 +0800</pubDate><description><![CDATA[依此类推，即为二分法的过程。本质上就是根据n的二进制各位上的值，将结果乘以x对应次幂。关于幂次的快速计算，一次次乘效率太差。二分法是一个比较理想的快速计算算法的选择。]]></description><category></category></item><item><title><![CDATA[一个公司采购申请审批系统，包含用户登录注销、用户创建、角色分配、采购申请审批及其他相关功能。]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/125965813</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/125965813</guid><author>beixingyuan</author><pubDate>Sun, 24 Jul 2022 23:10:27 +0800</pubDate><description><![CDATA[设计一个公司采购申请审批系统，包含用户登录注销、用户创建、角色分配、采购申请审批及其他相关功能。在Win10操作系统上，使用VS2019进行基于C++的开发。]]></description><category></category></item><item><title><![CDATA[数组循环左移的O(n)&O(1)算法]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/120237396</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/120237396</guid><author>beixingyuan</author><pubDate>Sat, 11 Sep 2021 14:59:11 +0800</pubDate><description><![CDATA[设将n个整数存放到一维数组R中，试设计一个在时间和空间两方面尽可能有效的算法，将R中保有的序列循环左移P(0&lt;P&lt;n)个位置，即将R中的数据由(X0X1……Xn-1)变换为(XpXp+1……Xn-1X0X1……Xp-1)
数据结构考研的题目。网上搜了下，给我看yue了，还是我自己来吧。
这道题目，可以设计出一个时间复杂度为O(n)的非递归原地算法出来，相信时间空间两方面都很难再高效点了。思路如下：
对数组(X0X1……Xn-1)左移p位，我们可以把数组分为((X0X1……Xp-1 | XpXp+]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十九题：两数相除_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/116572143</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/116572143</guid><author>beixingyuan</author><pubDate>Sun, 09 May 2021 22:31:45 +0800</pubDate><description><![CDATA[class Solution {
public:
    bool sign=true;//符号位
    int Double(int dividend, int divisor){
        if(dividend&gt;divisor) return 0;
        int ans=0,temp,div;//ans为最终结果，temp为每一轮的结果；div是每一轮除数不断翻倍到最后的值。
        while(dividend&lt;=divisor){
            te]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十八题：实现 strStr()_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115729268</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115729268</guid><author>beixingyuan</author><pubDate>Thu, 15 Apr 2021 16:17:38 +0800</pubDate><description><![CDATA[class Solution {
public:
    void GetNextval(string t,int nextval[]){
    	int j=0,k=-1;
    	nextval[0]=-1;
       	while (j&lt;t.length()-1){
           	if (k==-1 || t[j]==t[k]) {	
	    		if(t[++j]!=t[++k])  nextval[j]=k;
           	    else    nextval]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十七题：移除元素_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115723669</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115723669</guid><author>beixingyuan</author><pubDate>Thu, 15 Apr 2021 14:27:24 +0800</pubDate><description><![CDATA[class Solution {
public:
    int removeElement(vector&lt;int&gt;&amp; nums, int val) {
        int i=0,j=nums.size()-1;
        while(i&lt;=j){
            if(nums[i]==val){
                nums[i]+=nums[j];
                nums[j]=nums[i]-nums[j];
       ]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十六题：删除有序数组中的重复项_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115704278</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115704278</guid><author>beixingyuan</author><pubDate>Wed, 14 Apr 2021 17:23:28 +0800</pubDate><description><![CDATA[class Solution {
public:
    int removeDuplicates(vector&lt;int&gt;&amp; nums) {
        if(nums.size()&lt;2)return nums.size();
        int i=0,j=1;
        while(j&lt;nums.size()){
            if(nums[i]!=nums[j])
                nums[++i]=nums[j];
     ]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十五题： K 个一组翻转链表_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115703089</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115703089</guid><author>beixingyuan</author><pubDate>Wed, 14 Apr 2021 17:00:15 +0800</pubDate><description><![CDATA[class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        if(k==1)return head;
        ListNode *prehead=new ListNode(0,head);
        ListNode *l1=prehead,*p1,*p2,*p3;
        head=prehead;
        while(1){
            //检测
  ]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十四题：两两交换链表中的节点_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115643608</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115643608</guid><author>beixingyuan</author><pubDate>Mon, 12 Apr 2021 21:56:32 +0800</pubDate><description><![CDATA[class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head==nullptr||head-&gt;next==nullptr) return head;
        ListNode *l1=head,*l2=head-&gt;next;
        l1-&gt;next=l2-&gt;next;
        l2-&gt;next=l1;
        head=l2;
       ]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十二题：括号生成_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115641300</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115641300</guid><author>beixingyuan</author><pubDate>Mon, 12 Apr 2021 21:19:28 +0800</pubDate><description><![CDATA[class Solution {
public:
    vector&lt;string&gt; ans;
    void put(int L, int R, string t){
        if(L==0){
            while(R--!=0) t+=')';
            ans.push_back(t);
        }
        else{
            put(L-1,R,t+'(');
            if(L&lt;R)
    ]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十一题：合并两个有序链表_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115632473</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115632473</guid><author>beixingyuan</author><pubDate>Mon, 12 Apr 2021 17:55:03 +0800</pubDate><description><![CDATA[class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1==nullptr)return l2;
        if(l2==nullptr)return l1;
        ListNode* head1=l1,*tmp=nullptr;
        if(l1-&gt;val&gt;l2-&gt;val){
            head1=l2;
    ]]></description><category></category></item><item><title><![CDATA[leetcode(力扣)第二十题：有效的括号_C++]]></title><link>https://blog.youkuaiyun.com/beixingyuan/article/details/115600844</link><guid>https://blog.youkuaiyun.com/beixingyuan/article/details/115600844</guid><author>beixingyuan</author><pubDate>Sun, 11 Apr 2021 16:01:27 +0800</pubDate><description><![CDATA[class Solution {
public:
    bool isValid(string s) {
        string stack="";
        stack+=s[0];
        int ptr1=0,ptr2=1;
        while(ptr2&lt;s.length()){
            if(ptr1==-1) {
                stack+=s[ptr2];
                ++ptr1;
           ]]></description><category></category></item></channel></rss>