일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- graphql mutation error
- 화이트 해커를 위한 웹 해킹의 기술
- 예쁜술집 예술
- apollo react native
- 비동기배열
- graphql
- graphql with reactnative
- promise메서드
- 홍대 예술
- typescript
- graphql react native
- 신촌 소문난집
- 비동기배열처리방법
- 화이트해커를 위한 웹 해킹의 기술
- graphql 400
- 금별맥주
- 잠실새내
- useMutation error
- 운정 소바동
- 토라비
- 고르드
- 도그존
- 홍대 토라비
- graphql with RN
- 지보싶 신촌점
- apolloclient
- promise처리
- 홍대 카페 장쌤
- 잠실새내 도그존
- 앙버터마카롱
- Today
- Total
목록wargame 풀이 (61)
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
/ 풀이 문제를 클릭하면 해당 페이지가 출력된다. 그리고 Hidden Flag라고 적혀있다. 페이지 자체에 뭔가 숨겨져있을까 싶어서 페이지 코드와 쿠키도 확인했지만 특별히 찾을 수 있는건 없었다. 그러다 생각난 것이 robots.txt 였다. robots.txt 정보 수집을 위해 사용하는 웹 로봇에 정보 수집을 허용하거나 불허하는 명령을 내리는 파일 robots.txt 파일 내의 User-agent 키워드를 이용하여 지정된 User-agent 요청 헤더를 전송하는 특정 로봇에게 명령을 내릴 수 있다. 설정된 경로 정보 수집을 차단, 허용할 수 있다. robots.txt가 존재하는 사이트의 경우 디렉터리 경로 정보가 노출될 수 있다. disallow로 차단하더라도 robots.txt를 출력하면 어떤 디렉토..
id: nightmare pw: beg for me /* The Lord of the BOF : The Fellowship of the BOF - xavius - arg */ #include #include #include main() { char buffer[40]; char *ret_addr; // overflow! fgets(buffer, 256, stdin); printf("%s\n", buffer); if(*(buffer+47) == '\xbf') { printf("stack retbayed you!\n"); exit(0); } if(*(buffer+47) == '\x08') { printf("binary image retbayed you, too!!\n"); exit(0); } // check..
id: succubus pw: here to stay /* The Lord of the BOF : The Fellowship of the BOF - nightmare - PLT */ #include #include #include #include main(int argc, char *argv[]) { char buffer[40]; char *addr; if(argc < 2){ printf("argv error\n"); exit(0); } // check address addr = (char *)&strcpy; if(memcmp(argv[1]+44, &addr, 4) != 0){ printf("You must fall in love with strcpy()\n"); exit(0); } // overflow..
id: zombie_assassin pw: no place to hide /* The Lord of the BOF : The Fellowship of the BOF - succubus - calling functions continuously */ #include #include #include // the inspector int check = 0; void MO(char *cmd) { if(check != 4) exit(0); printf("welcome to the MO!\n"); // olleh! system(cmd); } void YUT(void) { if(check != 3) exit(0); printf("welcome to the YUT!\n"); check = 4; } void GUL(vo..
id: assassin pw: pushing me away /* The Lord of the BOF : The Fellowship of the BOF - zombie_assassin - FEBP */ #include #include main(int argc, char *argv[]) { char buffer[40]; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] == '\xbf') { printf("stack retbayed you!\n"); exit(0); } if(argv[1][47] == '\x40') { printf("library retbayed you, too!!\n"); exit(0); } // strncpy instead ..
id: giant pw: one step closer /* The Lord of the BOF : The Fellowship of the BOF - assassin - no stack, no RTL */ #include #include main(int argc, char *argv[]) { char buffer[40]; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] == '\xbf') { printf("stack retbayed you!\n"); exit(0); } if(argv[1][47] == '\x40') { printf("library retbayed you, too!!\n"); exit(0); } strcpy(buffer, ar..
id: bugbear pw: new divide /* The Lord of the BOF : The Fellowship of the BOF - giant - RTL2 */ #include #include #include main(int argc, char *argv[]) { char buffer[40]; FILE *fp; char *lib_addr, *execve_offset, *execve_addr; char *ret; if(argc < 2){ printf("argv error\n"); exit(0); } // gain address of execve fp = popen("/usr/bin/ldd /home/giant/assassin | /bin/grep libc | /bin/awk '{print $4}..
id: level20 pw: we are just regular guys 이번에는 fgets에서 79바이트만 읽기 때문에 BOF를 사용할 수 없다. printf(bleh)를 보면 일반적이지 않은 형식으로 bleh를 출력하고 있다. C언어에서는 출력할 때 %d, %s, %c 등 과 같은 형식 지정자를 사용하는데 여기서는 이를 사용하지 않아 FSB(포맷 스트링 버그)가 발생한다. FSB 위와 같이 문자열만 입력하는 것이 아니라 %x와 같은 형식 지정자가 일반 문자열에 포함되어 있으면 문자열을 출력할 뿐만 아니라 서식문자가 명령어처럼 실행되어 문자열로 입력하지 않은 부분이 출력되는 것을 볼 수 있다. 다음과 같이 스택이 구성되어 있을 때 print(bleh)가 실행되면 스택의 &bleh에서 바로 bleh의 내..
id: darkknight pw: new attacker /* The Lord of the BOF : The Fellowship of the BOF - bugbear - RTL1 */ #include #include main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] == '\xbf') { printf("stack betrayed you!!\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } argc
id: golem pw: cup of coffee /* The Lord of the BOF : The Fellowship of the BOF - darkknight - FPO */ #include #include void problem_child(char *src) { char buffer[40]; strncpy(buffer, src, 41); printf("%s\n", buffer); } main(int argc, char *argv[]) { if(argc