题目链接:ciscn_2019_n_1。 下载附件后,使用 IDA 打开程序,并进行反编译,定位到 main 函数,如下。 int __fastcall main(int argc, const char **argv, const char **envp) { setvbuf(_bss_start, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); func(); return 0; } func 函数如下。 int ...
ciscn_2019_n_1 题目分析 这题的主要溢出点在于gets(v1),但是这题有两种思路,第一种方法是通过gets函数溢出修改变量v2的值,使v2能够通过if判断语句,执行system函数,第二种方法还是通过gets(v1)溢出,不过这次是通过libc来实现,将ebp覆盖为system函数的地址 第一种方法 通过学习栈的工作原理,可以发现v1数组的填充...
补充 1.注意用hex数据填充v2时,要用p64包装一下,不能直接0x413480002.0x41348000就是11.28125的hex表示。
PWN练习 ciscn_2019_n_1 这道题应该是由于平台题目更新,导致网上我看的几个exp均不可用(cnblog和csdn)这些exp里面最主要的问题是平台将题目更改为64位的,但是这些网站里的exp里面均为32位的。 解题 首先老规矩checksec 64位的程序,部分随机化。 IDA查看一下 main函数 再查看一下func函数 本题思路就是通过gets...
buu ciscn_2019_n_1 1 栈溢出 预先步骤 检查文件格式(64位elf) checksec 没有任何保护 chmod 777 file 开启可执行权限 IDA(64) 找到func()函数,F5生成伪代码。 再寻找到v1,v2的相对位置,发现可以覆盖v1从而达到修改v2. 编写exp from pwn import*...
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 被以下专辑收录,发现更多精彩内容 + 收入我的专辑 + 加入我的收藏 PWN学习 渗透测试初体验:DC-1靶场原创 ...
ciscn_2019_n_1 例行检查,64bit,NX保护开启 运行一下,没有信息 64位IDA打开,看到了cat flag ,跟进瞧瞧 函数显示 ,当v2等于11.28125时,得到flag,但要求 我们输入的是v1,所以我们只有把v1和v2 之间全部填满之后紧接着写入11.28125即可。 我们可以看到这两个之间的大小为0x2C 再将11.28125转换为内存中的16进制...
到96,可以溢出,最后使用pwntools的攻击脚本如下: ciscn_2019_n_1 丢进ida反汇编可以看到func函数的逻辑如下: 可以看到逻辑是输入到v1,并让v2=11.28125即可,还是栈溢出逻辑,v1到栈底30h即48,v2到栈底4,至于11.28125在ida里对应部分可以看到整型对应的数字是41348000h,所以攻击脚本如下: ciscn_2019_c_1 丢进ida...
BUUCTF 4.ciscn_2019_n_1 拿到题目首先先运行程序 我们发现给了我们一个数字,我们猜测应该是一个条件判断的程序,然后我们检查一下保护机制 我们发现只开了NX(不可执行)保护,那我们直接看IDA就行了。 main函数只是设定了无缓冲模式,以及调用了一个func函数,然后我们看一下...
BUUCTF—ciscn_2019_n_1 先看看开了什么保护机制 打开64位ida看看 如果v2为11.28125,那么就执行system("cat /flag"),这样就可以得到flag了,然后发现v2是局部变量,在栈上,然后还有个gets的栈溢出,所以这题还是比较简单的,不过有一点就是,因为是gets,而不是读入,所以不是简简单单的11.28125,我们应该去ida里看看...