침투 테스트 캡처 플래그 훈련을 하던 중 "백업"이라는 파일을 발견했습니다. "백업"의 파일 형식을 확인한 결과 gzip으로 압축되어 있는 것으로 나타났습니다. "test"라는 파일로 추출했습니다. 그런 다음 "cat 테스트"를 수행하고 .bashrc 파일을 보고 있다는 것을 발견했습니다. 하지만 거기에는 유용한 것이 아무것도 없어서 갇혀 있습니다.
결국 스포일러를 보고 테스트 파일의 파일 형식이 tar 아카이브라는 사실을 발견했고, 압축을 풀면 필요한 내용이 나왔습니다.
내가 혼란스러워하는 점은 tar 아카이브에서 cat을 수행하면 아카이브에 임의의 파일이 표시되고(또는 임의가 아닐 수도 있지만 첫 번째 파일일 수도 있음) 실제로 그 파일에 내가 더 많이 본 것 외에는 아무것도 없다는 표시가 있다는 것입니다. (훨씬 더). 어떻게 되어가나요? 고양이는 파일 다음에 멈추는 것을 어떻게 알 수 있나요? 이것은 tar가 인코딩되는 방식과 관련이 있습니까?
무슨 일이 일어났는지 이해하고 싶습니다.
답변1
직접적인 답변을 드릴 수는 없지만 무슨 일이 일어나고 있는지 파악하는 데 도움이 되는 도구를 제공하겠습니다.
더 진행하기 전에 현재 파일의 백업 복사본을 만들 .bashrc
거나 (바람직하게는) 현재 위치 외부의 다른 디렉터리에서 다음을 수행하는 것이 좋습니다 $HOME
.
비교 및 실험
텍스트 파일(압축되지 않음)의 tar 파일을 생성하고 cat
이에 대한 작업을 수행할 수 있습니다. 첫 번째 줄에서 몇 가지 흥미로운 정보를 볼 수 있습니다. 이를 파일과 비교하세요 backup
.
tar가 아닌 파일(예 .bashrc
: )을 추출하면 다음과 같은 결과가 나타납니다.
$ tar xvf .bashrc
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
말씀하신 대로 backup
파일 추출이 작동하고 경고 메시지나 오류가 없으며 파일이 tar 아카이브인 것 같습니다.
file
당신의 친구가 될 것입니다
추출을 수행하기 전에 file 명령을 사용할 수 있습니다. 파일 유형이 표시됩니다.
$ file backup.tar
backup.tar: POSIX tar archive (GNU)
$ file .bashrc
.bashrc: ASCII text
TAR: 테이프 아카이브
이는 당연하게 들릴 수도 있지만 tar는 다른 여러 완전한 디렉터리에서 파일을 만드는 데 사용된(그리고 지금도 사용되는) 파일 형식입니다. 이를 통해 자기장을 사용할 수 있습니다.줄자보존하기 위한 기록 매체로 사용됩니다.
RTFM이 있나요?
tar
항상 그렇듯이 file
및 에 대한 매뉴얼 페이지를 읽는 것이 도움이 됩니다.
이 apropos
명령은 그대로 도움이 될 수도 있습니다지역 검색 엔진. 또 다른 예로, 사용 방법은 다음과 같습니다( "
여기서는 검색 키워드가 단일 매개변수로 그룹화되어 있음에 유의하세요).
apropos "file type"
답변
마지막으로(저는 좋은 사람이기 때문에) 다음은 .bashrc 파일이 포함된 tar 파일 내용의 예입니다.
$ cat backup.tar | head
.bashrc0000644000175000017500000000711012770726533011656 0ustar myusermyuser# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac