본문 바로가기

C언어

[Windows System Hacking] Trampoline Techinque [*] 해당 문서는 서적 [윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇]을 참고하여 작성하였습니다. Windows System Hacking 연구를 위해서 학습을 진행하며 여러가지 공격기법에 대하여 정리하려고 한다. 해당 문서는 Stack 기반의 Buffer Over Flow를 이용한 Return Address 변조에 관한 문서이다. [실습 바이너리 & 익스플로잇 코드] [ 실습 환경 ] 테스트 환경 : Windows 10 Pro 64bit 테스트 대상 : BufferOverFlow.exe[ASLR, Non DEP, Non StackGuard, Non safeSEH] 테스트 도구 : Immunity Debugger, IDA Pro 7.0 우선 테스트 환경은 Windows 10 Pro 64bit 버.. 더보기
Windows10 BOF 연습 지금까지는 단 한번도 Windows7이상의 환경에서 취약점 분석을 진행해본 적이 없었다. 오랜만에 툴 사용법도 상기시키고 Windows10에서의 pwnable은 어떠한 차이가 있는 지 몸소 느끼기 위해서 취약한 실행파일을 직접 만들어 공격을 진행해보려고 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include ; #include ; int main() { char buf[128]; FILE * fp; // getchar(); fp = fopen("data.txt", "r"); fscanf(fp, "%s", buf); printf("Message : %s\n", buf); fclose(fp); return 0; } Colored by Co.. 더보기
webhacking.kr [문제 26번] 25번에 이어 26번문제를 풀어보자. 해당 문제의 배점은 100point이며, 이 문제 또한 다소 쉬울 것으로 예상된다. 해당 문제를 접속하니 index.phps라고 인덱스 페이지의 소스코드가 주어진 것을 확인할 수 있다. 클릭해보자. 소스코드를 보니 상당히 쉽다. 분석) if(eregi("admin",$_GET[id])) { echo("no!"); exit(); } // GET방식으로 넘어온 id 변수의 값이 'admin'이면 "no!"를 출력 후 종료한다. $_GET[id]=urldecode($_GET[id]); // GET 방식으로 넘어온 id값을 urldecode하여 담는다. if($_GET[id]=="admin") // 해당 변수의 값이 'admin'일 경우 { @solve(26,100); //.. 더보기
webhacking.kr [문제 13번] 3번째 라인으로 넘어가서 문제 13번을 풀어보겠다. 해당 문제의 배점은 1000point이며 지금까지 나온 문제 중 제일 높은 배점을 갖고있다. 클릭해보자. SQL INJECTION기법으로 푸는 것으로 예상되며 힌트로 select flag from prob13password라고 주어져 있다. 그렇다면 시험삼아 인젝션을 시도해보자. 몇가지 문자들이 필터링 되어있는 것 같다. 다사다난한 삽질(?)이 예상된다. 임의로 여러가지를 테스트해보자. 1) 0을 입력시 아무런 반응이없다. 2) 1을 입력시 3) 2를 입력시 4) 2이상을 입력시 해당 결과를 토대로 예상해보면 result가 1일때는 참 0일때는 거짓으로 나온다고 생각된다. 해당 가설을 검증해보자. no=2 or 1 (참) 이라는 쿼리를 보내서 해당 결과.. 더보기
webhacking.kr [문제 12번] 웹해킹 12번 문제를 풀어보겠다. 포스팅하기전 테스트할 겸 혼자서 한번 풀어보았는데 미리 풀려버려서, 해당 문제가 풀려진 상태지만 정보도 정리할겸 다시 한번 풀어보겠다. 점수는 250point이다. javascript challenge라고 작성되어 있으며, 문자열을 확인해보면 해당 문제는 자바스크립트를 이용하여 푸는 문제인 것 같다. 이렇게해서는 정보가 부족하니 소스코드를 확인해보자. 해당 소스코드를 확인해보니, 여러가지 숫자가 나열된 것을 확인할 수 있다. 이것이 아마 비밀정보(?)로 예상된다. 소스코드를 한번 구체적으로 해석해보자. String.fromCharCode(인자1,인자2, ...) eval(인자1) 해당 정보를 토대로 해석해보면, 정수값의 나열로이뤄진 부분이 특정 문자열을 반환할 것이고, .. 더보기
webhacking.kr [문제 11번] 웹해킹 11번 문제를 풀어보겠다. 해당 문제의 배점은 300point이다. 해당 문제를 클릭하면 다음과 같은 정보가 주어진다. 해당 힌트를 분석해보자. $pat="/[1-3][a-f]{5}_.*CLIENT_IP.*\tp\ta\ts\ts/"; if(preg_match($pat,$_GET[va])) { echo("Password is ????");} 간단하게 해석해보면 $pat란 변수에 정규표현식을 담고 GET방식으로 전해진 val이라는 변수에 해당 정규표현식에 맞는 문자열이 전해지면, Password를 출력하는 것으로 확인된다. 정규표현식을 하나하나 살펴보자. 1. [1-3] [1-3] : 1~3사이의 문자 중 하나를 찾음 예시) 1, 2, 3 2. [a-f]{5} [a-f]{5} : a~f사이의 문자 중.. 더보기
컴퓨터 프로그래밍 과제#1 1. #include #define ASCIIGAP 48 int main(void) { char c_num1, c_num2; int num1, num2; int sum; printf("합산할 숫자 두개를 입력 : "); scanf("%c %c", &c_num1, &c_num2); //조건_두개의 문자형(%c) 숫자를 받는다 printf("%d %d\n", (int)c_num1, (int)c_num2); num1 = (int)c_num1 - ASCIIGAP; //형변환 num2 = (int)c_num2 - ASCIIGAP; //형변환 //예외처리 if( !((0 더보기
여왕말 문제(N queens problem) 문제 Eight Queens Problem : 8 x 8 의 판에 퀸 8개를 배치할 때 서로를 공격할 수 없게 배치하는 모든 경우의 판을 출력하시오. 아이디어 간단하게 생각해보면 퀸이 놓였을 경우, 또 다른 퀸을 놓을 수 없는 위치를 고려해보자.하나의 퀸이 이동할 수 있는 경로는 퀸의 가로, 세로, 대각선, 역대각선 방향으로만 움직일 수 있다. 이를 그림을 통해 살펴보자. ▣ : 퀸의 위치▩ : 퀸이 이동할 수 있는 경로□ : 퀸이 이동할 수 없는 경로 위에는 총 9개의 예시를 보이고 있다.각각의 예시는 한개의 퀸 배치 때 퀸이 이동할 수 있는 경로와 이동할 수 없는 경로를 표현한다. 그렇다면 다음과 같이 생각하면 문제를 간단하게 해결할 수 있다. 다음과 같이 총 9 x 9 81개의 배치가능 공간을 9개.. 더보기