[SWPUCTF 2021 新生赛]nc签到
haoo@LAPTOP-QH6DKIQF:/mnt/d/ctf/nssctf$ file pwn1 pwn1: ASCII text
|
这道题目的附件不是ELF文件,直接cat获取文件内容
haoo@LAPTOP-QH6DKIQF:/mnt/d/ctf/nssctf$ cat pwn1 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)
|
黑名单里面的东西有点多了,但是并没有su这种可以获取新shell的命令,并且这个子shell直接接管当前连接的标准输入输出而不会经过黑名单,因此在nc连接后输入sh获取新shell,从而绕过黑名单得到flag。