就出了两道题,hahapwn还是赛后出的,难受
hehepwn
思路泄露libc_base + rop
hahapwn
这个题非常离谱,禁用了execve,一开始我用本地的libc.so.6能打通本地(并且read、write也能用)
然后用它给的libc结果就打不通了,主要是因为他给的libc中的read、write函数不能用,
elf文件只有puts能用,不能用sys_write
思路是格式化字符串泄露canary + libc + stack,然后,rop进行orw
1 | from pwn import * |
3.datasystem
这个题除了前面那个passwd验证,其他的就比较常规了,这个题求出了的队要的脚本才出的
passwd输入”c”* 0x20能进入菜单(ida里这一部分的逻辑非常复杂)
add函数里面有溢出,并且之前分配了rwx段
shellcode 做法如下
1 | from pwn import * |
setcontext的做法如下(一开始没看到有个rwx的段)
1 | from pwn import * |
关于datasystem前面的分析
1 | __int64 sub_2170() |
__ m128i类型的变量大小为16个字节并且与地址对齐