카테고리 없음

HackCTF - Reversing - static

ddanss 2019. 4. 23. 14:47
728x90

static 이므로 정적분석으로만 한다.

 

그리고 db 2 dup (0cch)가 있는데 이게 Anti Analysis 중에 하나라고 한다.

 

Hxd로 가서 cc cc 를 다 90 90으로 바꿔주고 실행해보면 IDA에서 main이 나온다. (원래 main이 아이다에서 안나옴)

 

그리고 분석해준다.


도움 받은 곳 : https://www.slideshare.net/sehanlee7/bsides-delhi-ctf-2018-st4t1c-reversing-200pts-writeup

 

BSides Delhi CTF 2018 [st4t1c (Reversing 200pts)] WriteUp

BSides Delhi CTF 2018 [st4t1c (Reversing 200pts)] WriteUp Language: Korean

www.slideshare.net

 

코드는

 

#define _CRT_SECURE_NO_WARNINGS
#include
#include

int main()
{
int i, sum;
int arr[4] = { 'b','i','0','s' };
int key[30] = { 0x34, 0x39, 0x31, 0x39, 0x31, 0x39, 0x37, 0x31, 0x36, 0x31, 0x38, 0x33, 0x36, 0x32, 0x39, 0x31, 0x38, 0x31, 0x37, 0x31, 0x36, 0x31 };
int result[30] = { 0, };
sum = 0;
for (i = 0; i < 4; i++)
{
sum += arr[i];
}
printf("bi0s 나눈 값 : %X %d\n", sum / 30, sum / 30);

//아래는 블로그에서 계산한것

/*for (i = 0; i < 22; i++)
{
for (j = 0; j <= 140; j++)
{
if (i % 2 == 0)
{
if (((j + 4) ^ 12) == key[i])
{
result[i] = j;
break;
}
}
else
{
if (((j - 4) ^ 12) == key[i])
{
result[i] = j;
break;
}
}
}
}*/

//아래는 내가 역연산 해본것.

for (i = 0; i < 22; i++)
{
if (i % 2 == 1) result[i] = (key[i] ^ 0xc) + 4;
else result[i] = (key[i] ^ 0xc) - 4;
}


for (i = 0; i < 22; i++)
{
printf("%c", result[i]);
}

}

반응형