코엔 3번임 


문제는 


비주얼베이직에서 스트링 비교함수 이름은? 


이거임


일단 스트링 비교 함수 이름은 vbaStrCmp 이거임 예전에 풀어봤어서 기억남 ㅇㅇ


그 사실을 알고 있는 상태로 실행시켜봄 


이 화면 떴다가 확인 누르니까 아래 화면 뜸 


실행화면이 이렇게 나오고 K0ng 을 입력해봄 


예상해보면 저 입력한 K0ng 스티링이랑 하드코딩되어있는 스트링이랑 vbStrCmp 함수를 이용해 정답 여부를 판단할거같음 ㅇㅇ 


근데 나 아이다로 푼다고 했는데 아이다 안썼넹ㅋ


암튼 디버거에 던져서 사용 모듈 확인해보니까 스트링 컴페어가 두번 호출되는걸 확인해서 둘다 일단 브포 걸고 돌렸음 




돌려서 보니까 스택 영역에 내가 입력한 K0ng 이랑 비교할 하드코딩된 스트링이 역시 들어이씀 


  



저게 답임 




2번 문제임 


문제는 


정답은 무엇인가 ?


임 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ개심플하네 




실행시키니까 저런 오류가 뜸 ... 


ida에 올려봐도 안올려짐 .. 뭔가 이상한 파일이구나 해서 헥스에딧에 올려봄 



4D5A로 시작하는거 보면 실행파일은 맞는거 같음 


근데 아래 내려보니까 여러 함수 모듈들 있고, 더 아래에 정답이 있음 JK#FJZh .... 


뭐지 이렇게 푸는거 맞나 싶을정도로 어이없음 





'개인공부 > Reverse Engineering' 카테고리의 다른 글

[코드엔진] Basic RCE 04 with ida  (0) 2018.08.04
[코드엔진] Basic RCE 03 with ida  (0) 2018.08.04
[코드엔진] Basic RCE 01 with ida  (0) 2018.08.04
Ida로 다시 정리 시작  (0) 2018.08.03
코드엔진 Reverse-L06  (0) 2017.12.21

문제 


HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 


일단 프로그램 ida에 던지면 아래와 같이 그래프 뷰로 볼 수 이씀 




프로그램 전체 흐름을 보면 그냥 간단히 조건문에 따라 분기하고 프로세스 종료하는거임 





그래서 디버거에 던진다음 풀었는데 진짜 넘 쉽게 풀어서 어케 풀었는지 기억도 안남 ㅋㅋㅋ



아 맞아 추가로 이때 ida에서 디버거모드 사용할 줄 몰랐음 ....... 근데그냥 디버거 set default 로 설정한다음에 오류 떠도 그냥 하면 알아서 진행됨 .. 


(디버거 모드 들어가기 전에 브포 걸고 (F2) 디버깅 모드로 들어가면 댐(F9) )


끝  

'개인공부 > Reverse Engineering' 카테고리의 다른 글

[코드엔진] Basic RCE 03 with ida  (0) 2018.08.04
[코드엔진] Basic RCE 02 with ida  (0) 2018.08.04
Ida로 다시 정리 시작  (0) 2018.08.03
코드엔진 Reverse-L06  (0) 2017.12.21
코드엔진 Reverse-L05  (0) 2017.12.21

예전에 올리로 basic RCE 풀었던거 ............ 정리 안되있는데 ...... 그걸 다시 하긴 귀찮고 .. 



그냥 새롭게 ida 쓰는법 익히는겸 해서 코엔Basic RCE 1번부터 ida로 풀고 정리할 예정임 


귀찮긴할거같은데 일단 해보자 


ㅎㅎ

'개인공부 > Reverse Engineering' 카테고리의 다른 글

[코드엔진] Basic RCE 02 with ida  (0) 2018.08.04
[코드엔진] Basic RCE 01 with ida  (0) 2018.08.04
코드엔진 Reverse-L06  (0) 2017.12.21
코드엔진 Reverse-L05  (0) 2017.12.21
코드엔진 Reverse-L04  (0) 2017.12.21

자바스크립트 난독화 방법에 대한 정리임 


총 5가지가 있음 (물론 내가 배운것만 ㅋ)


난 자스 써본적도... 없는데 이정도는 이해감 그러니까 다들 이해 할 수 있다고  생각함


 

먼저 기본 코드임 


1. test1


<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>

<script>

var n =2;

var a = "test";

alert(a);

alert(n);

</script>

</body>

</html


그냥 기본코드임 ㅇㅇ 






두번째 코드는 압축해서 표현하는건데 말이 압축이지 걍 한줄로 쭉 쓴듯 그래도 보기 귀찮은건 사실 


2. test2 (Compress)

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>

<script>

var n =2;var a = "test";alert(a);alert(n);

</script>


</body>

</html






세번째 코드는 기능을 함수로 만들어서 마지막에 함수 호출하는 거임 아직까진 봐 줄만 함 


3. test3 (Java script function Expression)

코드를 함수를 사용해서 억지스럽게 데이터의 크기를 늘리고 흐름을 혼란스럽게 함 

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>

<script>

var a = function() {var n =2;var a = "test";alert(a);alert(n);}; a()

</script>


</body>

</html







뭔 그지같은 코드가 나옴 ....... 근데 보면 그냥 짜른거임 중간 중간 .. 근데 조금 한눈에 안들어 오는건 사실 


4. test4 (Java Script Data split) 사용하는 코드들을 나누어서 저장하고 마지막에 실행 


<html>

<head>

<title></title>

</head>

<body>

<script>

var s0 = "\<script\>";

var s1 = "var c=";

var s2 = "function()";

var s3 = "{var n =";

var s4 = 2;ar a";

var s5 = "= 'te";

var s6 = "st';aler";var s7 " = "

</script>


</body>

</html




이 아래에  왜 예제 코드가 없어졌지 .............?????????

암튼 아래 두개와 같은 방식도 있음 .. 나중에 코드 추가 해야겠다.


5. test5 (Java Script Data replace) 사용하는 코드에 쓰레기 코드를 삽입하고 나중에 모두 제거 


6. Hex 값으로 인코딩 하여 실행


eval == 실행하는 코드 

unescape == 디코딩 



아 맞다 근데 예전에 자스 난독화 된거 풀어주는 사이트였나 툴이였나 그런거 있었던거 같은데 ... 기억이 안나네 


암튼 뭐 이런것들이 있슴 




#include <stdio.h>

#include <time.h>

#include <stdlib.h>


int Create();


int main ()

{

    int arr[5][5] = {0,};

    int number = 1;

    int i,j = 0 ;

    int tmp1, tmp2;

    

    srand(time(NULL));

    

    while ( number < 25)

    {

        tmp1 = Create();

        tmp2 = Create();

        

        if(arr[tmp1][tmp2]==0)

            {

                arr[tmp1][tmp2] = number;

                number ++;

            }

    }

    

    for(i = 0; i < 5; i++)

    {

        for(j = 0; j < 5; j++)

        {

            if(j%5 ==0)

            {

                printf("\n");

            }

            printf("%d " , arr[i][j]);

        }

    }

    system("pause");

}


int Create()

{

    int num;

    num = rand()%5;

    return num;

}





이거 5X5 배열에 1~25 까지 숫자 랜덤으로 넣는 방식임 ! 


코딩 복습 

'개인공부 > C ' 카테고리의 다른 글

자료구조 연습문제 복습  (0) 2018.07.02
독하게 시작하는 C프로그래밍 10강 함수  (0) 2018.07.02
Call - By  (0) 2018.05.17
백준 2739번: 구구단  (0) 2018.01.23
백준 2742번: 기찍 N  (0) 2018.01.23

오늘정리할껀 for 문이랑 if 문, if else if else 이거임 


1. for 문 


numbers = [1,2,3,4,5,6,7] 


이라고 numbers 라는 리스트를 만들고 


for num in numbers :

print(num)


을 하게 되면 누가봐도 numbers 안에 있는 1,2,3,4,5,6,7 이 나오겠죠 ? 



2. if 문 


if 문은 


n = 5 라고 하고 


if n == 5:

print(' 입력하신 값은 :  ' , n)


이러면 입력하신 값은 : 5  라고 출력이 댈꺼임 



3. for + if else 문 


>>> numbers = [1,2,3,4,5,6]

>>> numbers

[1, 2, 3, 4, 5, 6]

>>> for num in numbers:

if num % 2 == 0:

print("짝수")

else:

print("홀수")


홀수

짝수

홀수

짝수

홀수

짝수



쉽다 쉬워 

이 문제는 배열의 있는 문자열의 공백을 제고하고, 문자열의 갯수를 세어주는 프로그램임 


|| 연산자랑 && 연산자랑 햇갈려서 잠깐 고민했음 

잠깐임

잠깐

아주잠깐


#include <stdio.h>

#include <string.h>


void compress_line(char str[]);


int main()

{

    char str[] = " Is it fun   !";

    compress_line(str);

    printf("%s: %d \n",str, strlen(str));

}


void compress_line(char str[])

{

    int i =0, j=0;

    char compressed[100];

    char prev = '\0';

    

    while(str[i] == ' ') //앞부분의 공백 제거

        i++

        

        while(str[i] != '\0') //str배열의 값이 \0이 아닐때까지 반복해라 -> 배열의 끝까지 반복해라

        {

            if(str[i] != ' ' || prev != ' ') // 만약 str[i] 가 공백이 아니거나 prev 가 공백이 아니라면

            {

                compressed[j] = str[i]; // str[i] 번째에 있는 값을 compressed[j] 에 대입해라

                j++; // 그리고 j 를 증가시켜 다음 글자를 받을 준비를 해라

            }

            prev = str[i];

            i++;

        }

    if(prev == ' ')

        j--;

    

    compressed[j] = '\0';

    

    strcpy(str, compressed);

}



'개인공부 > C ' 카테고리의 다른 글

배열과 반복문 복습  (0) 2018.07.10
독하게 시작하는 C프로그래밍 10강 함수  (0) 2018.07.02
Call - By  (0) 2018.05.17
백준 2739번: 구구단  (0) 2018.01.23
백준 2742번: 기찍 N  (0) 2018.01.23

함수에 관한 전반적인 내용은 이미 다 알고있지 .. 하지만 복습 개념으로 시작해씀 ! 


어찌 되었든 블로그에 정리해야 하니 정리를 하자면 


중요내용은 


1. 함수를 설계할때 UI, 부분과 기능 부분을 분리해서 구현해라 ! 

ex) 나이를 입력받아서 나이에 해당하는 요금을 계산하는 함수일 경우 


나이를 입력받는 UI 부분과, 요금을 계산하는 기능 부분으로 나누어서 구현학자 


2. 함수 원형이랑, 함수 시그니처랑은 같은말임 


일반적으로 함수 구현해서 원형선언(나는 원형선언이라함) 할때 


#include <stdio.h>


int Add(int a, int b) ;  <----------------------이거 말하는거임 이게 함수 원형선언 이라고 하고 또한 함수 시그니처 선언 이라고 함     


int main()

{

blah blah ~~

}


그렇다고 카더라 ~ 

'개인공부 > C ' 카테고리의 다른 글

배열과 반복문 복습  (0) 2018.07.10
자료구조 연습문제 복습  (0) 2018.07.02
Call - By  (0) 2018.05.17
백준 2739번: 구구단  (0) 2018.01.23
백준 2742번: 기찍 N  (0) 2018.01.23

음 악성코드가 유포된 경로 등을 찾기위해 사용하는 툴들이 있음 


xplico , network miner, sguil, wireshark 등등이 있음 


근데 현재는 xplico, network miner , sguil 이 세게만 사용해보았음 


트래픽 분석 프로세스를 보면 


1. sguil에 패킷 던져서 src, dst 파악하고 


2. network miner 로 해당 아이피 확인해서 대상자가 누군지, 맥주소는 무엇인지 등등 확인할 수 있음


//


추가적으로 xplico를 이용해서 방문했던 웹사이트 url을 통해 웹페이지 확인할 수 있음 ㅇㅇ


지금 예제 12,3, 번 풀어봤는데 이제 추후로 TrickBot malspam 내용 확인하면 될 거 같음 



그리고 난독화된 자바스크립트 내용을 


<script>

skasfljksdjgklsjgklsdjfgkljdsfklgjkl


document.write 

<script/> 로 확인 가능하고  document.write 대신에 alert 을 통해서도 확인 할 수 있음 

//


포트 번호 볼때 tcp 는 주로 6번을 이용하고 udp 는 17번을 이용함 


오케이 끝 

'개인공부 > Malware Analysis' 카테고리의 다른 글

윈도우 필수 프로세스  (0) 2018.08.21

+ Recent posts