1. intro 2. code 및 분석 2.1. code 2.2. 분석 N/A 3. exploit 대놓고 있는 플래그. CTF welcome 같네.
Register
·
Wargame/Cryptohack
1. intro 2. code 및 분석 2.1. code 2.2. 분석 리버싱을 위해 하는 크립토 공부. 가입부터 크립토를 요구한다 ㅋㅋㅋ Roman emperor's cipher는 Ceasar cipher를 이야기하며, 아래 링크와 같이 shift cipher다. https://en.wikipedia.org/wiki/Caesar_cipher Caesar cipher - Wikipedia From Wikipedia, the free encyclopedia Simple and widely known encryption technique The action of a Caesar cipher is to replace each plaintext letter with a different one a fixed n..
Textbook-DH
·
Wargame/Dreamhack
보호되어 있는 글입니다.
Diffie–Hellman key exchange 이론 및 중간자 공격
·
Tips & theory
서론 사실 크립토는 하고싶지 않았다... 근데 어쩔 수 없이 해야겠다 ㅠㅠ 디피-헬먼 키 교환은 공개 키 교환 알고리즘의 시조새이다. 기본 중의 기본이라는 소리. Diffie–Hellman key exchange 이론 뭐 이산 대수(이산 로그)니 뭐니, 에서 g, x, p를 알면 y를 구할 수 있지만, g, p, y를 알때 x를 구하기 어렵다는 이런 복잡한 문제는 일단 제껴두고, 저 공식을 풀어서 이야기하자면 를 이야기한다. 일단 그렇다치고, 최종적으로 서로 가질 키의 공식은 이다. 1. 기본 값 교환. 왜인지 모르겠지만 allice와 bob이 그 대상이다. 외국판 철수와 영희인가보다. 앨리스는 소수 p 그리고 정수 g를 선택해서 밥에게 공유한다. 이때 g는 인 수이다. 여기서 g와 p는 공개되어도 무관..
1월 말에 쓰는 일기.
·
Diary
자체평가 : ★★★☆☆ 리버싱 ≈ 크립토라는 조금은 짜증나는 상황에 있음에도 불구하고 리버싱 공부는 계속 진행하고 있다. 오히려 포너블 공부가 소홀해질 정도... (사실 포너블 문제가 안풀려서... ㅠㅠ) 리버싱은 결국 암호화를 위한 공식을 역으로 풀어내는 것이 주요 사항인데, 이 역으로 풀어내는 공식을 수립하는게 다소 어렵게 느껴진다. 하다보면 익숙해지겠지, 라고 생각하며 공부하고 있다. 그리고 크립토 공부도 조금씩 같이하고 있다. 리버싱 문제를 보면 대놓고 크립토 문제인 경우가 많아서 어쩔 수 없이 공부할 수 밖에 없는 상황이 만들어진다. 처음엔 그냥 웹 공부로 넘어갈까 생각했는데, 그래도 올해 목표를 위해 멱살 잡고 가고 있다 ㅋㅋ (n이 어떻고 p가 어떻고... 사실 1도 모르겠다... ㅠㅠ) 포..
command injection
·
Tips & theory
서론 항상 어려운 command injection. 잘 정리해둔 site를 찾았기에 복사해둔다. PayloadsAllTheThings/Command Injection at master · swisskyrepo/PayloadsAllTheThings · GitHub GitHub - swisskyrepo/PayloadsAllTheThings: A list of useful payloads and bypass for Web Application Security and Pentest/CTF A list of useful payloads and bypass for Web Application Security and Pentest/CTF - GitHub - swisskyrepo/PayloadsAllTheThings:..
cmd2
·
Wargame/pwnable.kr
1. intro 2. code 및 분석 2.1. code #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag")!=0; return r; } extern char** environ; void delete_env(){ char** p; for(p=environ; *p; p++) memset(*p, 0, strlen(*p)); } int main(int argc, char* argv[],..
cmd1
·
Wargame/pwnable.kr
1. intro 2. code 및 분석 2.1. code #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } 2.2. 분석 putenv를 통해 PATH 환경변수를 임의 폴더로 변경한다. 이는 곧 일반적으로 실행했던 ls, cat 등의 명령어가 그대로..
lotto
·
Wargame/pwnable.kr
1. intro 2. code 및 분석 2.1. code #include #include #include #include unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto bytes : "); fflush(stdout); int r; r = read(0, submit, 6); printf("Lotto Start!\n"); //sleep(1); // generate lotto numbers int fd = open("/dev/urandom", O_RDONLY); if(fd==-1){ printf("error. tell admin\n"); exit(-1); } unsigned char lotto[6]; if(read(fd, lo..
blackjack
·
Wargame/pwnable.kr
1. intro 2. code 및 분석 2.1. code int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); scanf("%d", &bet); if (bet > cash) //If player tries to bet more money than player has { printf("\nYou cannot bet more money than you have."); printf("\nEnter Bet: "); scanf("%d", &bet); return bet; } else return bet; } // End Function 2.2. 분석 코드가 길기에 주요 함수만 따왔다. 입력받은 값의 크기가 cash보다 크지만 않으면 되기에 음..