본문 바로가기

전체 글

(90)
[백준/c++] BOJ 14889 - 스타트와 링크 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 설명 N명의 사람을 N/2명씩 나누어 두 팀을 구성한다. 능력치 표가 주어지며, Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 두 팀의 능력치의 차이의 최솟값을 출력해라. N(4 > arr[i][j]; } solve(0, 0); cout
[포너블/pwnable.kr] blukat blukat@pwnable:~$ ls blukat blukat.c password #include #include #include #include char flag[100]; char password[100]; char* key = "3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+"; void calc_flag(char* s){ int i; for(i=0; i
[포너블/pwnable.kr] cmd2 #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[], char** envp){ delete_env(); put..
[포너블/pwnable.kr] cmd1 cmd1@pwnable:~$ ls cmd1 cmd1.c flag 빠르게 cmd1.c부터 보자 #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; } 환경변수 PATH를 /thankyouverymuch로 설정 filter 함수 호출 argv[1]에 fla..
[포너블/pwnable.kr] passcode #include #include void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("%d", passcode2); printf("checking...\n"); if(passcode1==338150 && passcode2==13371337){ printf("Login OK!\n"); system("/bin/cat flag"); } else{ printf("Login Failed!..
[포너블/pwnable.kr] blackjack blackjack 문제 파일은 http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html 에서 확인할 수 있다. nc [pwnable.kr](http://pwnable.kr) 9009 를 실행해 보면 이렇게 blackjack 게임을 할 수 있게 된다. 코드를 좀 살펴 보려고 했는데… 코드가 너무 길다. 하나하나 다 살펴 보긴 눈 빠질 것 같아서 results, cash, flag… 등등 특정 단어만 찾아 봤는데… 부분만 보니까 취약점을 못 찾겠어서 결국 처음부터 쭉 봤다. 그러다가 문득 워게임들을 풀면서 범위 확인을 제대로 확인하지 않아 생기는 취약점이 떠올랐고, cash의 범위를 확인해 주는 코드를 찾아 보았다. i..
[pwnable.kr/포너블] random random@pwnable:~$ ls flag random random.c 우선 ls로 파일을 확인해 보면 3개가 나온다 flag: 정답 파일 random: 실행 파일 random.c: random의 소스 파일 cat으로 random.c를 열어 보면 다음과 같다. #include int main(){ unsigned int random; random = rand(); // random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 ca..
[sstf-2023] BOF 102 #include #include char name[16]; void bofme() { char payload[16]; puts("What's your name?"); printf("Name > "); scanf("%16s", name); printf("Hello, %s.\n", name); puts("Do you wanna build a snowman?"); printf(" > "); scanf("%s", payload); printf("!!!%s!!!\n", payload); puts("Good."); } int main() { system("echo 'Welcome to BOF 102!'"); bofme(); return 0; } 0x0804856b : push ebp 0x080..