1.pwn ciscn_2019_n_1 101-10 收起 可以看到用gets让用户输入v1,还比较了v2的值,但此之前已经设置了v2的值为0.0 法一 可以用传统的方法栈溢出,覆盖返回地址为system的地址 法二 v2也存在栈上,也可以通过gets栈溢出修改v2原本的数据 movss xmm0, [rbp+var_4] #将v2的值放到xmm0里面 ucomiss xmm0, ...
BUUCTF 4.ciscn_2019_n_1 拿到题目首先先运行程序 我们发现给了我们一个数字,我们猜测应该是一个条件判断的程序,然后我们检查一下保护机制 我们发现只开了NX(不可执行)保护,那我们直接看IDA就行了。 main函数只是设定了无缓冲模式,以及调用了一个func函数,然后我们看一下 我们可以看到gets 和我们想要的flag,至此...
ciscn_2019_n_1 例行检查,64bit,NX保护开启 运行一下,没有信息 64位IDA打开,看到了cat flag ,跟进瞧瞧 函数显示 ,当v2等于11.28125时,得到flag,但要求 我们输入的是v1,所以我们只有把v1和v2 之间全部填满之后紧接着写入11.28125即可。 我们可以看到这两个之间的大小为0x2C 再将11.28125转换为内存中的16进制...
1.注意用hex数据填充v2时,要用p64包装一下,不能直接0x413480002.0x41348000就是11.28125的hex表示。
buu ciscn_2019_n_1 1 栈溢出 预先步骤 检查文件格式(64位elf) checksec 没有任何保护 chmod 777 file 开启可执行权限 IDA(64) 找到func()函数,F5生成伪代码。 再寻找到v1,v2的相对位置,发现可以覆盖v1从而达到修改v2. 编写exp from pwn import*...
到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...
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靶场原创 ...
buuctf 刷题记录_PWN ciscn_2019_n_1 PWN练习 ciscn_2019_n_1 这道题应该是由于平台题目更新,导致网上我看的几个exp均不可用(cnblog和csdn)这些exp里面最主要的问题是平台将题目更改为64位的,但是这些网站里的exp里面均为32位的。 解题 首先老规矩checksec...
#elf = ELF('./ciscn_2019_c_1') #print(hex(elf.got['puts'])) pop_rdi_ret = 0x0000000000400c83 puts_plt = 0x00000000004006E0 main_addr = 0x0000000000400B28 puts_got = 0x0000000000602020 len = b'A' * 88 #gdb.attach(sh) sh.recvuntil(b'Input your choice!\n') ...
sendlineafter(x,y) io=remote('node3.buuoj.cn',25188) #io=process('./ciscn_2019_n_5') elf=ELF('./ciscn_2019_n_5') ra() sl(asm(shellcraft.sh())) ra() sl('a'*40+p64(0x601080)) io.interactive() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22...