https://dreamhack.io/wargame/challenges/20/
์ด๋ฒ rev-basic-6 ๋ฌธ์ ๋ ์ด์ ๋ฌธ์ ๋ค๊ณผ ๊ฐ์ ์ ํ์ด๋ค.
์ด๋ฒ์๋ ์ญ์ if ์ ์ ์กด์ฌํ๋ ์กฐ๊ฑด๋ฌธ์ ๋ถ์ํ์ฌ
ํน์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์ด์ ์ญ์ผ๋ก
Correct๋ฅผ ์ถ๋ ฅํ๋ ์ ๋ ฅ๊ฐ์ ์ฐพ์๋ด์ผ ํ๋ค.
์กฐ๊ฑด๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค.
byte_140003020[*(unsigned __int8 *)(a1 + i)] != byte_140003000[i]
์ด ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ๋ฐ๊พธ๋ฉด,
byte_140003020[ a1[ i ] ] != byte_140003000[ i ]
์ด๋ค.
๋ฐ๋ผ์ ์ฃผ์๋ฅผ ๋ฐ๋ผ๊ฐ์ ์ ์ฅ๋์ด ์๋ ์ซ์๋ค์ ํ์ธํด ๋ณด์๋ค.
140003000 ์๋ ์ฝ 20๊ฐ ์ ๋๋ก ๋ณด์ด๋ ๊ฐ๋ค์ด ์ ์ฅ๋์ด ์๊ณ ,
140003020 ์๋ ์ฝ 200๊ฐ์ ๋๋ก ๋ณด์ด๋ ๊ฐ๋ค์ด ์ ์ฅ๋์ด ์๋ค.
140003000 ๊ณผ 140003020 ์ ๊ฐ๊ฐ str00[18] , str20[128]๋ก ๋ํ๋ด๊ฒ ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์์๋ผ ๊ฐ๋ค์ ์ ์ฅํ ์ฌ๋ฐ๋ฅธ ์ ๋ ฅ๊ฐ์ str33[19] ๋ผ๊ณ ํ๊ฒ ๋ค.
๋ค์, ์กฐ๊ฑด๋ฌธ์ ์ดํด๋ณด๋ฉด
๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์๋ค.
str20[ str33 [ i ] ] != str00[ i ]
์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ์์คํค ์ฝ๋์ ๋ํด ์ดํดํด์ผ ํ๋๋ฐ,
์ปดํจํฐ๋ ๋ฌธ์๋ฅผ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ํน์ ์ซ์๋ค์ ํน์ ๋ฌธ์๋ค์ ๋งค์นํ์ฌ
๋ฌธ์๋ค์ ์ ์ฅํ๋ค.
๊ทธ ์ซ์๋ค๊ณผ ๋ฌธ์๋ค์ ์ ์ฅํ๋ ๊ฒ์ ์์คํค์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ํํํ๋ค.
๋ฐ๋ผ์ ์ ์กฐ๊ฑด๋ฌธ์
์ ๋ ฅ๊ฐ์ ์ ์ฅํ ๋, ์ซ์๋ก ์ ์ฅํ๋๋ฐ,
๊ทธ ์ซ์๋ฅผ str20 ์ ์ธ๋ฑ์ค๋ก ์ง์ด๋ฃ์ด์,
str20์ ํด๋น ์ธ๋ฑ์ค์ ์์นํ ์ซ์๊ฐ
str00์ i๋ฒ์งธ์ ์ซ์์ ์ผ์นํ๋์ง ํ์ธํ๋ ๊ฒ์ด๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ญ์ผ๋ก ํ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํจ์ผ๋ก์จ
Correct๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์๋ผ ์ ์๋ค.
#include<stdio.h>
int main(){
char str20[128] = { // byte_140003020
0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,
0xCA ,0x82 ,0xC9 ,0x7D ,0xFA ,0x59 ,0x47 ,0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,
0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,
0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,
0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,
0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,
0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,
0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2
};
char str00[18] = { // byte_14003000
0x00, 0x4D, 0x51, 0x50, 0xEF,
0xFB, 0xC3, 0xCF, 0x92, 0x45,
0x4D, 0xCF, 0xF5, 0x04, 0x40,
0x50, 0x43, 0x63
};
char str33[19]; // input
int i;
int j;
for (i=0 ; i<18 ; i++){
for (j=0 ; j<128 ; j++){
if ( str20[j] == str00[i] ){
// 140003020 ์ ์ฌ์ฉ์์ ์
๋ ฅ ์ธ๋ฑ์ค ๊ฐ๊ณผ 140003000์ ๊ฐ์ด ์ผ์นํ๋๊ฐ?
str33[i] = j ;
// ์ผ์นํ๋ฉด str33์ j(140003020์ ์ธ๋ฑ์ค ๋๋ฒ)์ ๊ฐ์ ์ ์ฅ.
}
}
}
int t;
for ( t=0 ; t<19 ; t++){
printf("%c", str33[t]);
}
printf("\n");
return 0;
}
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด,
FLAG : Replac3_the_w0rld
์ด๋ค.
':: DreamHack ๐ฉ > wargame - reverse' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ dreamhack ] - [ reversing | rev-basic-7] (0) | 2022.06.01 |
---|---|
[ dreamhack ] - [ reversing | rev-basic-5 ] (0) | 2022.05.31 |
[ dreamhack ] - [ reversing | rev-basic-4 ] (0) | 2022.05.30 |
reversing | [CodeEngn] Malware L07 (0) | 2022.05.30 |
[dreamhack] - [reversing | rev-basic-2] (0) | 2022.05.30 |
๋๊ธ