โ๏ธ Reverse Engineering/CodeEngn
[Reverse Engineering] CodeEngn Basic RCE L17 WriteUp
A Lim Han
2023. 11. 15. 14:53
๐ฏ 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
[CodeEngn] Basic RCE L17 ๋ฌธ์ ํ์ด
๋ฌธ์ ํ์ผ >> ์ฝ๋์์ง ์ฌ์ดํธ ๋ชฉํ๊ฐ : Key ๊ฐ์ด BEDA-2F56-BC4F4368-8A71-870B ์ผ๋ Name์ MD5 ํด์ฌ๊ฐ ์คํ์ ์์ผ๋ด ๋๋ค. Name ๊ฐ์ ํ์๋ฆฌ๋ผ๊ณ ํ์ต๋๋ค. ๋๋ฒ๊ฑฐ๋ก ์ด ๋ถ๋ถ์ ์์ ํด์ค์๋ค. ์ฐํด๋ฆญ -> All re
cyalume.tistory.com
10. ์์ฑํ ์ฝ๋ ์คํ --> BEDA๋ก ์์ํ๋ ์๋ฆฌ์ผ์ ๊ฐ์ง๋ ๋ฌธ์ ๋ฐ๊ฒฌ
11. Name ์ผ๋ก ๋ฐํ์ง ๋๋ฌธ์ F ์ MD5 ํด์ฌ๊ฐ ๊ตฌํ๊ธฐ
# MD5 ํด์ ๊ฒฐ๊ณผ
: 800618943025315F869E4E1F09471012
12. ๋ค์ 17.exe ์คํ ํ ์์๋ธ Name ๊ณผ Key ์ ๋ ฅ --> ๋ฌธ์ ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ํด๊ฒฐ๋์์์ ํ์ธ