보안 버퍼오버플로우를 잘 모르겠습니다(소스)
글쓴이: 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까지 스택크기구한다음에 넣으면 될꺼 같긴 한데..
댓글 달기