보안 버퍼오버플로우를 잘 모르겠습니다(소스)
글쓴이: s7747s / 작성시간: 수, 2015/04/15 - 2:33오전
버퍼오버플로우를 갓 배웠구요..
스택 쿠키와 핸들러에 대해 배우고 있는데요
악성 텍스트파일을 read해서 본 코드를 실행해서 C 함수를 호출하는것이 최종 목표입니다.
좀 제가 아직 잘 몰라서 그러는지 어떻게 해야 C 함수가 호출될지 잘 모르겠네요...
단순 버퍼오버플로우로 C 함수 호출은은 성공했구요...
다만 그 다음 예제가 같은 코드로 스택쿠키(핸들러,next)를 이용해서 C 함수를 호출하는 건데
ollydbg로 지금 몇일을 실험하고 있지만 생각처럼 안되네요...
#include <stdio.h> #include <stdlib.h> #include <string.h> #pragma warning(disable:4996) void a(char *out, FILE *fp){ int r,i = 0; char buf[1]; while ((r = fread(buf, 1, 1, fp)) > 0) out[i++] = buf[0]; out[i] = 1/(400-i); } void b(FILE *fp, char *argv){ char buf[256]; a(buf, fp); printf("[FILE: %s]\n%s\n", argv, buf); *argv = NULL; } void c(){ printf("You win!\n"); } int main(int argc, char *argv[]){ FILE *pFile; if (argc != 2){ fprintf(stderr, "Usage: TxtReader.exe filepath\n"); exit(1); }else{ pFile = fopen(argv[1], "rb"); if (pFile == NULL){ fprintf(stderr, "Error: Invalid file path\n"); exit(1); } } b(pFile, argv[1]); fclose(pFile); return 0; }
Forums:
한줄씩 지워보세요. ㅇ_ㅇ;;
...
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
sdaf
으음....우선 c함수의 주소를 환경변수에 등록한 후에 a함수 ret에 넣으면 되지 않을까요?? b함수에 걸쳐 a함수를 실행시키니 스택값 보는건 조금 귀찮을꺼 같긴 한데.. argv[1]부터 buf까지 스택크기구한다음에 넣으면 될꺼 같긴 한데..
댓글 달기