본문 바로가기

CTF

[Tokyo Westerns 2017] Rev Rev Rev

[Tokyo Westerns 2017] Rev Rev Rev

첫번째 함수에서는 fgets로 받은 문자열의 enter값을 지워준다.

두번째 함수에서는 입력한 문자열을 거꾸로 뒤집어 저장한다.

세번째 함수에서는 뒤집은 문자열을 암호화한다.

네번째 함수에서는 각 암호화된 문자열에 비트연산 ~을 해주고 저장시킨 후 

해당 값이 s2와 같다면 성공문을 출력시킨다.

 

[Solve]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "stdafx.h"
#include <stdio.h>
 
int main()
{
    int a[31= { 0x410x290xD90x650xA10xF10xE10xC90x190x090x930x130xA10x090xB90x490xB90x890xDD0x610x310x690xA10xF10x710x210x9D0xD50x3D0x150xD5 };
    for (int i = (sizeof(a)) / 4 - 1; i >= 0; i--)
    {
        for (int j = 0; j < 127; j++)
        {
            int v1 = 2 * (j & 0x55| (j >> 1& 0x55;
            int v2 = 4 * (v1 & 0x33| (v1 >> 2& 0x33;
            char tmp = 16 * v2 | (v2 >> 4);
            if (tmp == (char)(~a[i]))
            {
                printf("%c", j);
                break;
            }
        }
    }
    printf("\n");
    return 0
}
//TWCTF{qpzisyDnbmboz76oglxpzYdk}
cs


'CTF' 카테고리의 다른 글

[Nuit Du Hack 2017] Matriochka Step 2  (0) 2018.02.08
[Nuit Du Hack 2017] Matriochka Step 1  (0) 2018.02.07
[Samsung CTF 2017] Easyhaskell  (0) 2018.02.05
[Codegate 2018] BaskinRobins31  (0) 2018.02.05
[Codegate 2018] easy_serial  (2) 2018.02.05