++x; }puts("Ciphertext");returnputs(s); } 我们查看字符串,发现并没有看到想要的system和\bin\sh\,也就是说我们要自己构造一个ROP链来实现攻击。但是这里有一个问题,这个程序会对输入的s字符串进行加密,也就是说会破坏我们的ROP链,同时我们也可以看到加密的位数是根据字符串的长度进行判断的strlen(s),这...
开启NX保护(堆栈不可执行) 然后是IDA看看伪代码: int__cdecl main(intargc,constchar**argv,constchar**envp) { init(argc, argv, envp); puts("EEEEEEE hh iii"); puts("EE mm mm mmmm aa aa cccc hh nn nnn eee"); puts("EEEEE mmm mm mm aa aaa cc hhhhhh iii nnn nn ee e"); puts(...
题目本身不复杂,可以操作的就是一个加密功能,gets读取输入的内容并做异或加密后输出。存在溢出,但是payload结构会被破坏。
from pwn import * sh = remote('node4.buuoj.cn', 25875) #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)...
ciscn_2019_c_1 ciscn_2019_c_1 0x01 检查⽂件,64位 检查开启的保护情况 开启了NX保护 0x02 IDA静态分析 在主函数这⾥并没有常见的gets栈溢出,尝试再这⾥⾯的⼦函数找找,发现了encrypt函数,进去查看
一般再的库中,如果限制了大小,那么基本上只有两种方法,一种是orange,还有一种就是堆溢出,然后修改size大小为unsorted bin中的大小来leak libc。 由于本题有堆溢出,但限制了堆的大小,所以我们想泄露libc,只能使用后者(因为申请的chunk大小被限制了),而在有tache的情况下,要泄露,还必须填满相应的tache块,才能将chunk...
首先checksec和查看多少位的程序 可以看到是32位的程序,放入ida中 进入getflag 可以看到strcpy存在栈溢出,所以大体思路就是输入密码进入选择1造成溢出然后进入选择4获取shell 经过网上查询,不知/bin/sh可以获得shell,只有sh也可以获得shell 所以使用ROPgadget和obj'dump获取地址 ...
BUUCTF[CISCN2019华北赛区Day2Web1]HackWorld id=0 id=1 id=2 id=3 发现结果不⼀样,尝试 : ">4","=4","<4" :在⾃⼰的环境下验证⼀下:爆⼀下数据库:id=(ascii(substr(database(),1,1))>32)'''@Modify Time @Author --- --- 2019/10/25 19:28 laoalo '''import ...
某一个函数的GOT条目的地址传给write函数,就可以泄漏这个函数在进程空间中的真实地址,GOT表中所存的puts函数的地址便是在ret2lib进程中的实际地址。 IDA里面看看: 通过命令readelf -Vret2lib可以查到其libc库版本为libc.so.6: 通过pwntools的elf模块我们可以链接该libc.so.6库,简单看看里面的函数地址: 同样针对...
2019-11-25 11:30 −本文作者:z3r0yu 由“合天智汇”公众号首发,未经允许,禁止转载! 0x00 前言 周末的比赛质量还是挺高的,特别是boring_code,有点烧脑但是做的就很开心。 0x01 boring_code 题目描述 http://112... 蚁景网安实验室 0 1183 ...