본문 바로가기

컴퓨터

[Windows System Hacking] Bypassing DEP [*] 해당 문서는 서적 [윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇]을 참고하여 작성하였습니다. Windows System Hacking 연구를 위해서 학습을 진행하며 여러가지 공격기법에 대하여 정리하려고 한다. 해당 문서는 Mitigation중 하나인 DEP에 대한 우회방법(Bypassing)에 대해 기술한 문서이다. DEP는 메모리 영역에 실행권한을 두어 실행권한이 없는 메모리 영역의 코드가 실행되는 것을 방지하는 기법이다. [실습 바이너리 & 익스플로잇 코드] [ 실습 환경 ] 테스트 환경 : Windows 10 Pro 64bit 테스트 대상 : VUPlayer 2.4.9 [Non ASLR, DEP, Non StackGuard, Non safeSEH] 테스트 도구 : Immunity De.. 더보기
[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 버.. 더보기
C++에서의 입출력 C++에서의 입출력은 출력 : std::cout > value 다음과 같은 형태로 가능하다. #include int main(void) { int val1; std::cout > val1; int val2; std::cout > val2; int result = val1 + val2; std::cout 더보기
webhacking.kr [문제 22번] 오늘은 22번 문제를 풀어보겠다. 사실은 며칠전에 풀었지만, 포스팅하지 못하였다. 해당 문제의 배점은 500point이며, 점수 배점이 높은거로 봤을 때, sql injection문제가 아닐까 조심스레 예상해본다. 해당 페이지 접속시, 다음과 같은 로그인 폼이 보인다. 힌트에 유의해야 할 부분이 있는 데, if($id=='admin') echo("good! Password is $solution"); 해당 부분에서 로그인한 아이디($id)가 'admin'이면 패스워드를 출력하는 것으로 확인된다. 먼저 해당 입력폼의 임의의 아이디를 넣고 로그인해보자. 역시나 Wrong! 이라는 메세지를 보여주면서 로그인 실패한다. 한번 회원가입해볼까? username은 'lidron'으로 password는 'crack'으.. 더보기
webhacking.kr [문제 20번] webhacking.kr 19번에 문제가 있다. 해당 문제는 잠시 보류해두고 20번 문제부터 풀어보겠다. 이제 해당 문제를 클릭해보자. 상단의 다음과 같은 메세지와 3개의 인풋박스가 나열되어 있다. 또한 힌트로 "do not programming!""this is javascript challenge" 주어져 있다. 자바스크립트 문제라고 명시되어있기 때문에 소스코드를 확인해보자. 눈여겨봐야할 부분 두 부분을 체크해놓았다. 해당 입력폼에 조건 4가지가 붙어 있고, 다음과 같은 조건이 성립되지 않으면 해당 부분을 포커싱하게 되어있다. 1. if(lv5frm.id.value=="") { lv5frm.id.focus(); return; } 해당 입력폼이 공백이면, 해당 입력폼에 포커스를 맞춘다. 2. if(lv.. 더보기
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 (참) 이라는 쿼리를 보내서 해당 결과.. 더보기
컴퓨터 프로그래밍 과제#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 더보기
webhacking.kr [문제 8번] 8번 문제를 풀어보자. 해당 문제의 점수는 350point이다. 실제로 해당 문제를 눌러보자. 따로 얻을 수 있는 정보는 없으니 해당 페이지의 소스코드를 확인해보자. 해당 소스코드에 대한 힌트가 있으니 확인해보자. 다음과 같은 소스코드가있다. 대충 봤을 때 $ck[0] 변수가 "admin"이 될 경우 해당 문제가 풀리는 것으로 생각된다. 구체적으로 소스코드를 분석해보자. 해당 소스코드가 분석이 완료되었으니 문제해결 전략을 구상해보자. 처음에 "select id from lv0 where agent = '$_SERVER[HTTP_USER_AGENT]'"라는 쿼리를 날린다. 허나 해당 쿼리가 올바르게 실행되지 않을 것이다. HTTP_USER_AGENT에 들어간 변수값이 정상적인 쿼리가 아니기 때문이다. 해당.. 더보기