pwn13
使用gcc编译运行获得flag,gcc flag.c -o hello
flag:ctfshow{hOw_t0_us3_GCC?}
pwn14
阅读源代码,根据第10行代码得知文件名为key
使用gcc编译文件后,在当前目录下创建文件key,内容为CTFshow,运行编译后文件,获得flag
flag:ctfshow{01000011_01010100_01000110_01110011_01101000_01101111_01110111_00001010}
pwn15
使用nasm生成flag.o文件,nasm -f elf64 flag.asm
ld -s -o flag flag.o生成flag可执行文件
执行./flag获得flag
flag:ctfshow{@ss3mb1y_1s_3@sy}
pwn16
gcc flag.s -o flag
执行./flag获得flag
flag:ctfshow{daniuniuda}
pwn17
IDA查看反汇编代码,看到case3有system(cat /ctfshow_flag)函数,但是sleep(0x1BF52u)语句要睡眠0x1BF52秒,换算成10进制就是114514秒,那就是31个小时,所以另求他法
看到case2,首先输出一行字符串,然后让我们输入一行长度为0xA的字符串buf,接着把我们输入的字符串buf赋给dest,然后使用system函数将dest作为参数传入进行命令执行。因此我们想到使用/bin/sh作为参数,执行system(/bin/sh)
拿到shell,获得flag
flag:ctfshow{1cc59a63-5e39-4b0c-8627-8c89acf0ca8f}
pwn18
代码的大概流程需要我们输入一个值v4,看这个值v4是否等于9,如果等于9就执行fake()函数,然后再执行system函数打印出flag。如果不等于9就先执行real()函数,然后再执行system函数打印出flag,因此nc连接之后输入9,获得flag。
flag:ctfshow{8ca57281-32ce-421c-afc5-2a783c327b8a}
pwn19
根据题目提示关闭了输出流,nc连接之后可以使用 >&0定向到输入流
pwd >&0
看到输入命令之后,返回了/,说明当前处于根目录
使用ls >&0查看根目录
使用cat ctfshow_flag >&0,查看flag
flag:ctfshow{8f9508f6-4623-4b7f-8e0e-d88e703d771d}