전체 글 205

[Overthewire] level 20 -> level 21

문제를 보겠습니다. 해석을 하자면, 홈 디렉토리에는 명령줄 인수로 지정한 포트의 localhost에 연결하는 setuid 이진 파일이 있다. 그리고 다음 연결에서 텍스트 줄을 읽고 bandit20의 암호와 비교합니다. 암호 비교를 마치면 다음 레벨에 대한 패스워드를 제공한다. 바로 풀이를 하겠습니다. 전에 받았던 패스워드로 로그인을 한 후, ls를 하니 setuid의 권한을 가진 파일이 하나 발견 되었습니다. 흠...그래서 고민을 해보다가 nc명령어가 있다보니 사용해야 될 거 같았습니다. nc명령어는 원하는 형태의 종류의 접속형태를 만들어 냅니다. 터미널을 하나 켜서 그럼 임의의 포트를 하나 만들어 보겠습니다. 그리고 저 setuid 파일을 가지고 만든 임의의 포트로 실행을 시켜보겠습니다. 그다음, nc..

bandit 2022.06.10

BCACTF 3.0 Write up

2022년 6월 4일 BCACTF 3.0에 참가를 하게 되었습니다. [Broken Image] 문제는 다음과 같습니다. 파일이 하나 있어, hxd 에디터로 열어 봤습니다. 헤더 시그니처가 png인것으로 보아 png로 확장자를 바꿔줬습니다. [My New Friend] 문제를 보겠습니다. 주어진 파일은 다음과 같습니다. hxd에디터로 열어보니 아무런 문제가 없어 리눅스로 들고가서 png파일에 스테가노를 한 것으로 추정돼, zsteg 명령어로 파일을 봤습니다. 플래그를 찾을 수 있었습니다. [Zoinked Zip 1] 문제를 보겠습니다. 주어진 파일은 다음과 같습니다. 실행을 시켜보니 손상되어 있었습니다. 헤더가 손상되었다..그래서 hxd에디터로 정상적으로 헤더를 돌려줬습니다. 이 부분을 다음과 같이 고쳐주..

CTF/해외CTF 2022.06.09

[Overthewire] level 19 -> level 20

문제를 보겠습니다. 해석을 해보면, 홈 디레거리에 있는 setuid 의 권한을 가진 파일이 있다. 그것을 이용해서 비밀번호를 구해라 setuid는 root만 접근할 수 있는 파일을 일반 사용자도 실행을 할 수 있게 해주는 권한?이다. bandit20-do를 보면 -rws가 붙었습니다. S가 붙게 되면 setuid의 권한을 지니고 있는 파일임을 알 수 있습니다. 이 파일을 가지고 바로 문제를 풀어볼게용! 원래 bandit20-do를 사용하지 않고 열면 이렇게 됩니다. 권한에 막히기 때문에 setuid가 설정된 파일을 이용해서 패스워드를 볼 수 있었습니다.

bandit 2022.06.07

[Overthewire] level 18 -> level 19

문제를 보겠습니다. 해석을 하자면, 다음 레벨의 비밀번호는 홈 디렉터리의 readme 파일에 있다. 하지만 ssh로 로그인을 하면 로그아웃이 되게끔 만들어 놨으니 쉘을 우회하거나 해봐라 이말이네여?? 바로 풀어보겠습니다. 정상적으로 로그인을 해보면 이렇게 나옵니다. Byebye?? 이상한 친구네요... 그럼 readme 파일에 있다니까 바로 출력을 시켜 보겠습니다. 이렇게 풀수도 있고, 다른 방법으로도 풀어 보겠습니다. -t 옵션은 pseudo -tty를 강제 할당합니다. 그냥 쉽게 말해서-t /bin/sh는 쉘 스크립트를 강제로 실행하는 것 입니다. 쉘은 커널과 사용자를 연결해주는 하나의 매개체 역할을 합니다. 명령어를 입력하면 $표시로 되어 바뀌게 됩니다. 일회용으로 권한을 탈취한 것이기 때문에 패스..

bandit 2022.06.07

[Overthewire] level 16 -> level 17

문제를 보겠습니다. 해석을 해보면, localhost로 접속하기 위한 포트가 범위가 31000 ~ 32000 사이에 있다. 이말은 즉, 포트 번호를 찾아라 이말이죠? nmap 명령어로 바로 찾아 보겠습니다. 5개가 존재하는데, 하나씩 다 실행시켜보면 31790 포트 번호에서 RSA키를 줍니다. 패스워드는 16번 로그인 패스워드를 입력 하시면 됩니다. RSA키를 얻었다면, 아까 13번처럼 파일에다가 저장을 해야됩니다. 그래서 복사를 해서 하나의 파일로 만들어봅시다. 임의적인 디렉터리를 하나 생성해주고, 안에 빈 파일을 하나 만들어 준 다음 값을 채워넣었습니다. 그리고 바로 접속을 해보겠습니다. 권한 에러가 뜨는것으로 보아, 루트 사용자만 접속을 하게 끔 해주면 될 거 같습니다. 정상적으로 bandit17이..

bandit 2022.06.07

[Overthewire] level 15 -> level 16

문제를 보겠습니다. 해석을 해보면, 다음 레벨의 비밀번호는 SSL 암호화를 사용하여 localhost의 포트 30001에 현재 비밀번호를 제출하여라. 에러를 제거하고 싶으면 ign-eof를 추가하여라. 바로 접속을 해볼까요? 명령어에 대해서 간단히 설명하겠습니다. openssl은 네트워크를 통한 데이터 통신에 쓰인다. s_client와 -connect는 서버에 연결하기 위해서는 꼭 필요한 친구이다. openssl s_client -connect [서버]:[포트번호] 가 형식이다. 그래서 답을 구할 수 있었다.

bandit 2022.06.07

[Overthewire] level 13 -> level 14

문제를 보겠습니다. 해석을 하자면, 다음 레벨의 비밀번호는 /etc/bandit_pass/bandit14에 저장되어 있으며, 사용자만 읽을 수 있다. 이말은 즉, bandit14의 계정으로 로그인을 하라는 뜻이다. 바로 문제를 풀어보겠습니다. ls 명령어를 해보니 sshkey.private 파일이 있었고, 출력을 해보니 RSA 공개키가 있었다. 그래서 문제에 맞게, 경로를 이동 해보도록 하자. 출력을 해보니 권한에 막힌다.. 우리가 문제를 풀 때 ssh로 접속을 하는 것으로 보아, 마찬가지로 똑같이 접속이 가능할 것이다. 바로 접속을 해보도록 하자. 로그인이 되었다. 패스워드 경로는 문제에서 주어졌고, 그대로 출력하면 패스워드를 구할 수 있다.

bandit 2022.06.07

[Overthewire] level 12 -> level 13

문제를 보겠습니다. 해석을 하자면, 다음 레벨로 가는 비밀번호는 반복적으로 압축된 16진 덤프인 data.txt 파일에 저장된다고 합니다. 즉, 압축을 계속 해제해야되는 오뚜기 같은 친구로 보이네요...과정은 생략하고 명령어들만 설명하고 넘어 가겠습니다. mkdir = 디렉터리 생성 cp = 복사 data.txt는 다음과 같이 16진 덤프파일(hex dump)로 되어 있습니다. xxd 명령어는 16진 덤프 파일을 보는 명령어인데, -r 옵션을 주고 명령어를 실행하면 역으로 hex dump파일을 binary파일로 변경 시켜줍니다. 요기서부터 시작입니다... file 명령어로 weasley 파일이 어떤 파일로 되어 있는지 봅시다. gzip이네여..? 그래서 mv명령어로 확장자를 바꿔줍시다. 이제 gzip으로..

bandit 2022.06.07