# VimJail (pwn)
###ENG[PL](#pl-version)
In the task we get credentials to log-in on the server via SSH.We are `ctfuser` user and we can see that there is `flagReader` binary in our home, but with it's only executable for `secretuser`.The binary also has GUID bit set, so it can read flag in the `/.flag`.
By checking sudoers we notice that, as expected from the task name, we can sudo on secretuser when running `rvim`:
```sudo -u secretuser rvim```
The problem is that rvim restricts shell commands execution, so we can't simply run the `flagReader`.It took us a lot of time to figure this out but finally we noticed that we can use a custom `.vimrc` file when starting rvim, and commands in such file will be executed with the current user provileges!
So by using file:
```python3 import ospython3 os.system("/home/ctfuser/flagReader /.flag")```
And running: 
```sudo -u secretuser rvim -u ourvimrcfile```
gives the flag `flag{rVim_is_no_silverbullet!!!111elf}`
###PL version
W zadaniu dostajemy dane do logowania na serwer po SSH.Logujemy się jako `ctfuser` i możemy zobaczyć ze ` home jest binarka `flagReader`, ale można jej użyć tylko jako `secretuser`.Binarka dodatkowo ma ustawiony GUID i może odczytać flagę z `/.flag`.
Po sprawdzeniu listy sudoers widzimy, że, zgodnie z oczekiwaniami po nazwie zadania, możemy zrobić sudo na secretusera uruchamiając `rvim`:
```sudo -u secretuser rvim```
Problem polega na tym, że rvim nie pozwala na uruchamianie komend shell więc nie możemy po prostu uruchomić `flagReader`.Zajęło nam dość sporo czasu wpadnięcie na rozwiązanie, ale finalnie zauważyliśmy, że można przy starcie podać własny plik `.vimrc` a komendy z tego pliku zostaną wykonane z uprawnieniami aktualnego użytkownika!
Więc używając pliku:
```python3 import ospython3 os.system("/home/ctfuser/flagReader /.flag")```
I uruchamiając:
```sudo -u secretuser rvim -u ourvimrcfile```
Dostajemy flagę `flag{rVim_is_no_silverbullet!!!111elf}`