용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.강원도 홍천 서석면에 위치해있으며 1급수 용오름계곡 바로 옆에 있습니다.홍천군 1등 마을로 마을에서 직접 관리하는 용오름캠핑장,펜션 10개를 운영하고 있으며 각종 모임이 가능하도록 식당,회의실,야외무대가 설치되어 있습니다.홍천군 1등 마을답게 캠핑장,펜션 마을 전지역 wi-fi 사용이 가능하며 매년 봄 팸투어 실시, 여름엔 마을에서 재배한 홉으로 직접만든 맥주축제,마리소리 음악축제 를 열고 있습니다.계곡의 경우 수심이 다양하여 다이빙 포인트가 2곳이 있으며 아이들이 안전하게 물놀이를 할 수 있는 곳도 여러 곳 있습니다.홍천 용오름캠핑장 팸투어 다녀왔어요.요즘은 농산촌체험마을에서 캠핑과 여러프로그램을 같이 하는 곳이 추세더라고요. 아미산이 둘러쌓인 청정계곡이 흐르는 아름다운 용오름체험휴양마을 에서 운영하는 홍천 용오름캠핑장 팸투어 다녀왔어요. 테크 앞 강이...붕어빵 가족의 담너머 세상구경https://m.blog.naver.com/1092119/220711235599가을여행-홍천여행- 홍천 용오름 마을 첫째날여행의 계절 가을입니다. 요즘 저희는 강원도에 꽃힌 상태인지라...카페 행복한 이티씨와 함께하는 홍천 용오름 마을 1박2일 체험에 참가를 하였답니다! 평소 체험 시간보다 조금 늦은 출발을 해서 차가 밀리지 않으려나...귀여운 단지https://m.blog.naver.com/sanguidan/50181593653용오름마을 캠핑장여름휴가의 시즌이다.. 강원도의 계곡과 시원함을 만끽하기 위해 캠핑장을 검색하다 우연히 알게 된 홍천의 용오름 캠핑장.. 성수기라 캠핑장 요금들이 사악하다 용오름캠핑장 옆엔 해미르 캠핑장이 있는데...★살로몬의 잇츠캠핑★https://m.blog.naver.com/freeguy9040/20163628934맥주효모로 만든 용오름맥주마을 바쏘 맥주샴푸와 맥주마스크팩...1988년까지 맥주 원료인 홉을 재배하며 번성했던 강원도 홍천군 서석면 용오름 마을이란 곳이 있었습니다…

php? c?

php? c?

문제를 들어가면 다음과 같은 페이지가 나온다.

get source를 눌러 소스를 보았다.

table {background-color:#000; color:#fff;} td {background-color:#444;} D1: D2: get source document.getElementById("firstf").focus();

코드를 햇거하면

tmp/p7 파일이 존재하지 않으면 p7.c 파일을 컴파일 하여 p7이라는 파일을 만들고 첫번째 값을 p7이라는 실행파일에 집어넣고 실행한 값을 result라는 변수에 저장한 후 result 값이 1이 아니고 d1하고 d2 값이 동일하면 flag 값을 출력하고 그렇지 않으면 try again이라는 문구를 출력하라는 것이다.

이제 p7.c라는 코드를 확인해보자

http://wargame.kr:8080/php_c/p7.c

불러오는 중입니다...

다음과 같이 입력하면 p7.c 코드가 나온다.

#include #include void nono(); int main(int argc,char **argv){ int i; if(argc!=2){nono();} i=atoi(argv[1]); if(i<0){nono();} i=i+5; if(i>4){nono();} if(i<5){printf("%d",i);} return 0; } void nono(){ printf("%d",1); exit(1); }

다음 코드를 해석하면

#include #include void nono(); int main(int argc,char **argv){ int i; if(argc!=2){nono();} // 값이 두개 들어가지 않으면nono 함수를 실행 i=atoi(argv[1]); // 첫번째 값을 정수형으로 변환 if(i<0){nono();} // 첫번째 값이 0보다 작으면 nono 함수 실행 i=i+5; if(i>4){nono();} // i가 4보다 크면 nono 함수 실행 if(i<5){printf("%d",i);} // i가 5보다 작으면 i 값을 return return 0; } void nono(){ printf("%d",1); exit(1); }

정말 말이 안된다. i가 0보다 크되 4보다 크고 5보다 작아야 한다.-> 오버플로우를 일으켜야 한다.

오버플로우란 범위 이상의 값을 집어 넣어서 생기는 오류이다.

코드를 보고 예를 설명하겠다.

#include int main(void) { int a = 2147483647 + 1; printf("%d",a); return 0; }

int 형 같은 경우 범위가 -2,147,483,648 ~2,147,483.647이다.

만약 최대범위인 214748367보다 큰 수가 들어가게 되면 어떻게 될까?

코드를 돌려보면

다음과 같이 -2147483648이 나온다.

이처럼 버퍼 오버플로우를 이용해서 공격을 한다.

p7.c 코드를 보면 i는 0보다 커야 한다.

그러므로 양수형 범위의 값이 나와야한다.

오버플로우를 일으키는 값이 나와야 하기 때문에 d1에 2147483648이 들어가야 한다.

하지만 밑에 코드를 보면 i = i+5가 있다.

그렇기 때문에 d1에는 2147483648-5한 값인 2147483643이 들어가야한다.

그 후 result 값과 d2의 값이 같아야 하기 때문에 -2147483648이 들어가면 된다.

근데 여기서 값을 집어 넣을 때 문제가 되는 부분이 있다.

d1의 값이 10글자인데 9글자밖에 들어가지 않는다.

그렇기 때문에 F12를 눌러 d1 입력부분의 maxlength를 10글자 이상으로 늘려 준다.

다음과 같이 늘려 준 다음 d1에다가는 2147483643 d2에는 -2147483648를넣어준다.

그럼

플래그 값이 나온다.

from http://tkdrms568.tistory.com/180 by ccl(A) rewrite - 2020-03-06 02:54:10

댓글

이 블로그의 인기 게시물

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.

[C언어] 백준 알고리즘 - 숫자의 개수(2577번)

[2020 정보처리기사 실기 - 프로그래밍 언어 활용] 2. 언어 특성 활용...