๐ฏ CodeEngn Basic RCE L17 WriteUp
1. ๋ฌธ์ ํ์ธ ํ ํ์ผ ๋ค์ด๋ก๋
2. 7-Zip File Manager ์ ํตํด ํ์ผ ์์ถ ํด์ --> 17 ํ์ผ ์ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ๊ฒฌ
3. 17.exe ์ ์คํํ์ฌ ์์์ ๊ฐ ์ ๋ ฅ ํ "Check it!" ํด๋ฆญ --> "Please Enter More Chars..." ์ด๋ผ๋ ๊ฒฝ๊ณ ๋ฌธ ํ์ธ
4. Immunity Debugger ์ ํตํด 17.exe ํ์ผ ์คํ --> ์ฑ๊ณต & ์คํจ ๋ฉ์์ง์ ๋น๊ต๋ฌธ ๋ฐ๊ฒฌ
5. ๋ฐ๊ฒฌํ ๋น๊ต๋ฌธ์ 03 --> 01๋ก ๋ณ๊ฒฝ
6. ์คํจ๋ฌธ๊ณผ ๊ทธ ์๋ BreakPoint ์ค์ --> ํจ์น ์ฌํญ ์ ์ฅ
7. Debugging ์คํ ํ ASCII ์๋ฆฌ์ผ์ด ์์ฑ๋ ๊ฒ์ ํ์ธ
8. 17.0045B850 ํจ์์ BreakPoint ์ค์ ํ ์์ผ๋ก ์ง์ --> ํด๋น ํจ์๊ฐ ๋ฐ๋ณต๋ฌธ์ ํตํด ์๋ฆฌ์ผ์ ์์ฑํจ์ ํ์ธ
++ ์ ๋ ฅํ Key ๊ฐ์ ์ฒซ 4๊ธ์ ๋ฐ๊ฒฌ
9. ์ฒซ 4๊ธ์๊ฐ "BEDA" ์ธ Key ๋ฅผ ์ฐพ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ ์์ฑ
#include <stdio.h>
int main(void)
{
ใ
คใ
คint ESI = 0, EDX = 0;
ใ
คใ
คfor (int i = 0x30; i <= 0x7A; i++) { //from 0 to z
ใ
คใ
คใ
คใ
คESI = i * 0x772; //IMUL ESI, ESI, 0x772
ใ
คใ
คใ
คใ
คEDX = ESI; //MOV EDX, ESI
ใ
คใ
คใ
คใ
คEDX *= ESI; //IMUL EDX, ESI
ใ
คใ
คใ
คใ
คESI += EDX; //ADD ESI, EDX
ใ
คใ
คใ
คใ
คESI *= 0x474; //IMUL ESI, ESI, 0x474
ใ
คใ
คใ
คใ
คESI += ESI; //ADD ESI, ESI
ใ
คใ
คใ
คใ
คEDX = ESI;
ใ
คใ
คใ
คใ
คprintf("%c >> %X\n", i, EDX); //์์ฑ๋ ์๋ฆฌ์ผ ์ถ๋ ฅ
ใ
คใ
ค}
ใ
คใ
คreturn 0;
}
++ ์คํฌ๋ฆฝํธ ์ฝ๋ ์ถ์ฒ
--> https://cyalume.tistory.com/27
10. ์์ฑํ ์ฝ๋ ์คํ --> BEDA๋ก ์์ํ๋ ์๋ฆฌ์ผ์ ๊ฐ์ง๋ ๋ฌธ์ ๋ฐ๊ฒฌ
11. Name ์ผ๋ก ๋ฐํ์ง ๋๋ฌธ์ F ์ MD5 ํด์ฌ๊ฐ ๊ตฌํ๊ธฐ
# MD5 ํด์ ๊ฒฐ๊ณผ
: 800618943025315F869E4E1F09471012
12. ๋ค์ 17.exe ์คํ ํ ์์๋ธ Name ๊ณผ Key ์ ๋ ฅ --> ๋ฌธ์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ํด๊ฒฐ๋์์์ ํ์ธ
'โ๏ธ Reverse Engineering > CodeEngn' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Reverse Engineering] CodeEngn Basic RCE L19 WriteUp (0) | 2023.11.17 |
---|---|
[Reverse Engineering] CodeEngn Basic RCE L18 WriteUp (1) | 2023.11.16 |
[Reverse Engineering] CodeEngn Basic RCE L16 WriteUp (0) | 2023.11.14 |
[Reverse Engineering] CodeEngn Basic RCE L15 WriteUp (0) | 2023.11.10 |
[Reverse Engineering] CodeEngn Basic RCE L14 WriteUp (0) | 2023.11.10 |