전체 글

Daily life/일상 팁

vm 공유 폴더가 인식되지 않을 때

#!/bin/bash sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

Security/시스템 해킹(PWN, System)

Linux 권한 정리 - setuid, setgid, sticky bit

CTF 운영에 대한 글을 정리하면서 https://neutrinox4b1.xyz/posts/suggestions-for-running-a-ctf/ Team. PPP - CTF 운영에 대한 제안 neutrinox4b1.xyz pwnable 부분에 chmod 1733 chmod 2755 같은 4자리로 된 권한 부여를 보면서 뭐지? 생각하다가 찾아보면서 알게되어 정리합니다. 특수 권한 기본적인 권한 rwx는 알고있다고 가정하고, setuid, setgid도 명확하지 않으니 이것부터 설명해보겠습니다. setuid setuid는 권한을 빌려주는 것입니다. 일반적인 사용자가 파일을 실행하면 소유자 권한으로 실행되며 /bin/passwd가 대표적인 예시입니다. 소유자 권한에 x대신 s가 들어가며, 대문자 S는 set..

Daily life/근황

BoB에서 얻는 것에 대한 주관적인 생각

내가 BoB를 하면서 바뀐 점이 무엇인가? BoB에서 얻은 것이 무엇인가? 라는 생각이 종종 들기도 하고, 같은 12기 동기들한테도 듣곤 한다. 그러다 보면, BoB를 동경하던 내 모습과 BoB를 하고 있는 내 모습이 비교되곤 한다. 중학교 3학년 코드게이트 컨퍼런스를 방문했을 때, 어쩌면 그 전부터 BoB를 동경해왔다. BoB가 갖고 있는 최고의 멘토진들과 교육생들의 아웃풋이 낳은 결과였다. 주위 잘하는 사람들은 모두 BoB 출신 또는 BoB를 하고 있었다. 심지어 그 다음 해인 고등학교 1학년에도, BoB를 합격한 친구를 만났다. 그 친구는 나에게 시스템 해킹을 가르쳐 주었다. 나는 꼭 대학교 2학년이 되면 BoB를 할 생각이었다. 1학년은 이르다고 생각했다. 그 당시 내가 BoB에 바라던 기대는 실..

Write up (Wargame)/Pwnable

[pwnable.kr] blackjack 풀이

Analysis 이번 문제는 블랙잭에서 100만 달러 이상을 달성하는 것이다. 일단 nc로 프로그램을 켜보면 꽤 재미있는 블랙잭 화면이 나온다. 실제로 해보면 재미가 있다..! 게임을 플레이하면 포인트를 베팅하고 Hit, Stay를 결정한다. 블랙잭 룰은 일반 블랙잭과 동일하다. 이러한 긴 코드의 프로그램에서 취약점을 찾고 100만달러를 벌라는 것은.. 짐작가는 바가 있다. 너무 짐작이 잘 된다. 코드에서는 이렇게 베팅할 달러를 숫자로 입력하도록 되어있는데 여기가 음수가 되면 패배했을 때, 돈을 벌게 될 것이다. 보통 이런데서 터질거 같으니 넣어봤다. Solution 실제로 된다. 한 줄의 코드도 읽지 않고, 쉽게 플래그를 얻어냈다.

Write up (Wargame)/Pwnable

[pwnable.kr] coin1 풀이

Analysis N과 C값이 주어진다. N은 동전의 갯수이다. C는 선택할 수 있는 횟수이다. N개의 동전 중에서 한 개가 가짜 동전이다. 클라이언트는 0~N-1 개의 인덱스 중에서 입력을 하면 그 인덱스에 해당하는 동전 무게의 합을 알려준다. N값이 너무 커서 사람이 하기에는 무리가 있다. C 횟수도 그렇고 딱 봐도 이진탐색을 써달라고 울부짖는게 보인다. 혹시 몰라 -1 도 넣어보고 했지만 에러는 발생하지 않는다. 이건 알고리즘 문제인듯; Solution 이진탐색 코드를 작성하여 수행 중에, 시간 초과가 난다. 서버가 느리면 여기서 하라고 한다. 아니 ssh로 어디를 접속해야하나 싶었는데 그냥 이전 ssh 아무데나 들어가서 localhost로 하면 된다. 로컬호스트로 하니까 엄청 빨리 나온다.. fro..

Write up (Wargame)/Pwnable

[pwnable.kr] shellshock 풀이, CVE-2014-6271

Analysis bash? 와 관련있다고 하는데 Olday 취약점인가? #include int main(){ setresuid(getegid(), getegid(), getegid()); setresgid(getegid(), getegid(), getegid()); system("/home/shellshock/bash -c 'echo shock_me'"); return 0; } 코드가 매우 짧다. setresuid, setresgid를 통해 set uid가 걸려있던 shellshock 바이너리의 권한을 shellshock_pwn으로 수정한다. 그러고보니 shellshock를 bomb lab에서 했는데. 그 때에는 웹을 통해서 공격했었다. 이 문제에서는 쉘을 그대로 공격하는 것으로 원리를 알아가야겠다. S..

Write up (Wargame)/Pwnable

[pwnable.kr] mistake 풀이

analysis 문제의 내용으로 dhmonkey라는 것과 관련이 있고, 힌트는 연산자 우선 순위이다. dhmonkey를 구글에 검색했을 때 나오는 것이 없으니 사전에 알아두어야 하는 것이 아니라 ssh를 접속하고 나서 지켜보면 될 것 같다. #include #include #define PW_LEN 10 #define XORKEY 1 void xor(char* s, int len){ int i; for(i=0; i 0)){ printf("read error\n"); close(fd); return 0; } char pw_buf2[PW_LEN+1]; printf("input password : "); scanf("%10s", pw_buf2); // xor your input xor(pw_buf2, 10);..

Write up (Wargame)/Pwnable

[pwnable.kr] leg 풀이

analysis 문세 설명을 보니 ARM 문제이다. asm 파일이랑 C언어 파일을 다운로드 하고 분석한다. #include #include int key1(){ asm("mov r3, pc\n"); } int key2(){ asm( "push{r6}\n" "addr6, pc, $1\n" "bxr6\n" ".code 16\n" "movr3, pc\n" "addr3, $0x4\n" "push{r3}\n" "pop{pc}\n" ".code32\n" "pop{r6}\n" ); } int key3(){ asm("mov r3, lr\n"); } int main(){ int key=0; printf("Daddy has very strong arm! : "); scanf("%d", &key); if( (key1()+k..

그믐​
neutrinox4b1