网络安全
CTFPWN 标签描述

一,初步分析题目 话不多说,先看看IDA。 main里啥都没有,看看vuln。 笑死了,知道不用libc,还留下栈溢出勾引我。 shift+f12看到没有/bin/sh字符串,也没有system函数。 二,ROP链的概念及基础原理 这里就得引出一个新的概念了,叫做ROP链构造。这种方法可以让我们在没有system函数及/bin/sh字符串时调用system函数及让其读入/bin/sh成功提权。 WHY? 且听我慢慢道来 1.在64位中,所有的函数调用都与寄存器有着千丝万缕的联系。所有的函数的前六个参数分别从rdi,rsi,rdx,rcx,r8,r9读取,而第七个参数开始会从栈中读取。sy...

  kfLTHs171Dp5   2023年11月30日   28   0   0 ROP构造ret2syscallCTFPWN

今日份心脏骤停,噔噔咚! 每种保护介绍 FullRELRO 保护原理:其实就是不让你改写got表中的内容。 影响:不能劫持stack_chk_fail函数以绕过canary,不能劫持动态链接里面已经调用过的函数。(不懂libc快去翻我文章doge) Canary 保护原理:在所有函数的栈的末尾(比如rbp-8)插入一个值,叫做canary,在退出函数时检查是否和原来写入的canary值一致,如果不一致就调用stack_chk_fail退出程序。 影响:让你栈溢出多了一个步骤(比如泄露canary的值,比如劫持stack_chk_fail函数。比如逐字节爆破) NX 保护原理:让你栈上写入的东...

分析 这题题目已经在暗示用int数据的overflow了,不过不急,先分析一下。 保护 基本没啥保护,也挺好,适合不用搞太多花里胡哨的泄露,只需理解这题想告诉你的知识。 后门函数 看到有一个whatisthis函数,正是我们要的catflag函数。 main函数 login函数 main函数里需要的操作很简单,只需输入一个1就欧克。然后到login函数看看有啥。 check_passwd函数 看到有两个输入点,似乎可以存在栈溢出。但是想都不用想check_passwd肯定不会让你这么轻松溢出的。更别提这个函数给buf这个变量足足分配了512个字节,而我们输入0x199还离着远着呢。...

 我会用尽可能简单,偏向做题方面的角度给出SROP的基础知识,当然不是说掌握到只会做题就可以,而是说先知道怎么做,然后再gdb里面靠实操学习,个人认为这样是比较快和省力的方法。 首先,系统调用函数里有一个函数叫做sigreturn。 64中系统调用号为0xf,即15。 这个函数在我目前比较浅显的理解看来就是把所有寄存器都pop了一遍。可以想象到,在pop|ret的gadget数量不足的情况下,这将会非常好用。更赞的是,它可以改变所有寄存器,注意是所有,包括rip这个指令寄存器。所以我们调用这个函数之后不仅可以控制通常调用函数所用的rax,rdi,rsi,rdx,rcx等,还可以代替r...

  kfLTHs171Dp5   2023年12月07日   28   0   0 SROP初步理解CTFPWN

现在我要介绍一种基于栈溢出的题型,但是这种题目没有直接给你一个形如 system() { binsh//这里意思就是一个直接提权的后门函数,但是我不记得具体长什么样 //反正IDA会给注释 } 的后门函数。但是题目中还是出现了system函数以及binsh字符串 这里我们最终目的还是让这个system函数执行binsh。问题就是如何将binsh传给system函数。这一点我们最后来讲解 看看例题BUUCTF的jarvisoj_level2。首先在IDA里随便逛逛,收集信息 main函数看到vuln函数和system函数,没什么东西。进vuln函数看。 看到一个read函数,能读进整整...

  kfLTHs171Dp5   2023年11月24日   22   0   0 栈溢出CTFPWN