Description
Don’t power users get tired of making spelling mistakes in the shell? Not anymore! Enter Special, the Spell Checked Interface for Affecting Linux. Now, every word is properly spelled and capitalized… automatically and behind-the-scenes! Be the first to test Special in beta, and feel free to tell us all about how Special streamlines every development process that you face. When your co-workers see your amazing shell interface, just tell them: That’s Special (TM) Start your instance to see connection details. ssh -p 55063 ctf-player@saturn.picoctf.net The password is af86add3
Steps :
╰─❯ ssh -p 55063 ctf-player@saturn.picoctf.net ─╯
The authenticity of host '[saturn.picoctf.net]:55063 ([13.59.203.175]:55063)' can't be established.
ED25519 key fingerprint is SHA256:tJ0wuU5yBvNO/FrkHmR9iY36VJClMhKV+Hq2sxqKFmg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[saturn.picoctf.net]:55063' (ED25519) to the list of known hosts.
ctf-player@saturn.picoctf.net's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 6.5.0-1023-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Special$ ls
Is
sh: 1: Is: not found
Special$ /*
Absolutely not paths like that, please!
Special$ ./*
./*
sh: 1: ./blargh: Permission denied
Special$ id
Id
sh: 1: Id: not found
Special$ is
Is
sh: 1: Is: not found
Special$ $
$
sh: 1: $: not found
Special$ $l
Al
sh: 1: Al: not found
Special$ #
looks like something gay :3
after 1-2 hrs found about parameter expansion
Time to ChatGPT
What you’re seeing with ${parameter=ls} is the result of parameter expansion with the default value assignment syntax.
Let’s break it down:
${parameter=ls}
- ${parameter=ls} is an example of parameter expansion with default assignment:
-
If parameter is unset or null, it will assign the value ls to parameter.
-
If parameter is already set, it will not change its value.
-
In your case, it seems that parameter is not set, so it assigns ls to parameter.
-
ls is then evaluated as a command. When ls is evaluated in the shell, it lists the contents of the current directory.
-
So, when you run ${parameter=ls}, here’s what happens:
- It expands parameter to ls.
- The shell then interprets ls as a command and executes it, which is why you’re seeing the list of files and directories in your current working directory.
What’s happening step-by-step:
- Shell Expands ${parameter=ls}:
- parameter is not set, so it assigns ls to parameter.
- ls is executed:
- Since ls is a valid command, it runs and lists the contents of the current directory.
So the result of ls is printed:
Desktop Movies Documents Downloads Files Library Pictures
Developer Music OneDrive - Victoria University Public Virtual Machines.localized
Key points:
-
${parameter=ls} doesn’t directly execute ls as a command in itself. The result is that ls becomes the value of the variable parameter.
-
Since parameter is set to ls, the shell evaluates it as a command and executes it, which is why the contents of your directory are displayed.
Example:
$ echo ${parameter=ls} # Result: This lists the contents of the directory
Output:
Desktop Movies Documents Downloads Files Library Pictures
Developer Music OneDrive - Victoria University Public Virtual Machines.localized
To summarize:
-
parameter=ls sets the value of parameter to the string ls, and since ls is a command, the shell executes it and lists the directory contents.
-
${parameter=ls} effectively runs ls because ls is a valid command and the expansion happens inside the shell.
So here is what i did :
Testing out parameter expansion
╰─❯ ${parameter=ls}
Desktop Movies
Developer Music
Documents OneDrive - Victoria University
Downloads Pictures
Files Public
Library Virtual Machines.localized
╭─ ~ ───────────────────────────────────────────────── base 23:12:55 ─╮
╰─❯ ${parameter="ls"}
Desktop Movies
Developer Music
Documents OneDrive - Victoria University
Downloads Pictures
Files Public
Library Virtual Machines.localized
╭─ ~ ───────────────────────────────────────────────── base 23:14:35 ─╮
╰─❯ ${paramr="ls"}
Desktop Movies
Developer Music
Documents OneDrive - Victoria University
Downloads Pictures
Files Public
Library Virtual Machines.localized
TIME TO COOK
╰─❯ ssh -p 55783 ctf-player@saturn.picoctf.net ─╯
The authenticity of host '[saturn.picoctf.net]:55783 ([13.59.203.175]:55783)' can't be established.
ED25519 key fingerprint is SHA256:tJ0wuU5yBvNO/FrkHmR9iY36VJClMhKV+Hq2sxqKFmg.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:20: [saturn.picoctf.net]:55063
~/.ssh/known_hosts:22: [saturn.picoctf.net]:59088
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[saturn.picoctf.net]:55783' (ED25519) to the list of known hosts.
ctf-player@saturn.picoctf.net's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 6.5.0-1023-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Special$ #
#
Special$ #
#
Special$ myvar="ls"
Myvar="ls"
Special$ $myvar
Mylar
sh: 1: Mylar: not found
Special$ ./*/*
./*/*
sh: 1: ./blargh/flag.txt: Permission denied
Special$ ${command= cat ./blargh/flag.txt}
${command= cat ./blargh/flag.txt}
picoCTF{5p311ch3ck_15_7h3_w0r57_****}Special$