반응형
반응형
반응형

SuNiNaTaS의 3번문제 풀이입니다. 


[WEB]



공지 게시판에 글을 써라...


당연히 공지 게시판에는 글쓰기 버튼이 없다. 다른 게시판에서 찾아야 할 거 같은데...



글을 올릴 수 있는 게시판이 하나 있다. 바로 Q&A FREE BOARD


오른쪽 하단에 글쓰기 버튼이 있다.


이 버튼의 코드다 :


<input type="button" class="btnWrite gray" value="WRITE" onclick="location.href='../board/write.asp?page=1&amp;divi=Free'">



../board/write.asp?page=1&amp;divi=Free 으로 이동한다.



그런데, 공지게시판으로 이동하는 코드를 보면


<a href="../board/list.asp?divi=notice" class="button blue1 medium">NOTICE</a>



divi가 다르다. divi를 notice로 바꿔주어서 공지글쓰기 페이지로 이동해서 글을 게시하면 된다.





반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [WEB 6번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 5번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 4번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 2번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 1번] 풀이  (0) 2018.07.30
반응형

SuNiNaTaS의 2번문제 풀이입니다. 


[WEB]




그냥 로그인창이 하나 떠있습니다...


일단 페이지 소스를 확인해 봅시다....앗 프레임 소스 보기를 해야 맞는 코드가 뜹니다.



개발자도구 F12로 보는건 너무 뭐가 많아서

페이지 우클릭후 프레임 소스보기를 하셔야 편합니다.



소스 하단을 보시면, 자바스크립트 코드와 함께 힌트가 있습니다.


<script>

function chk_form(){

var id = document.web02.id.value ;

var pw = document.web02.pw.value ;

if ( id == pw )

{

alert("You can't join! Try again");

document.web02.id.focus();

document.web02.id.value = "";

document.web02.pw.value = "";

}

else

{

document.web02.submit();

}

}

</script>

<!-- Hint : Join / id = pw -->

<!-- M@de by 2theT0P -->



JS코드에서는 id와 pw가 같으면 안된다고 하고 있고, 힌트에서는 id와 pw가 같아야 한다고 하고 있습니다.


이는 자바스크립트 코드를 우회해 주면 되는데, 여러가지 방법이 있겠지만.. 저는 크롬 개발자 도구중 콘솔기능을 이용하겠습니다.


위 chk_form()함수를 아래와같이 재정의 했습니다.



function chk_form(){

var id = document.web02.id.value ;

var pw = document.web02.pw.value ;

        document.web02.submit();

}



이 코드를 콘솔에 입력해주었습니다.



그 다음 id와 pw에 같은 값을 넣어주면 authkey를 얻을 수 있습니다.

반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [WEB 6번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 5번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 4번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 3번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 1번] 풀이  (0) 2018.07.30
반응형

SuNiNaTaS의 1번문제 풀이입니다. 


[WEB]




문자열을 입력받는 폼이 있고, 아래에 코드가 있습니다.


코드를 보면, 입력받은 문자열을 처리하는 코드인 것 같습니다.


마지막에 결과가 admin이 되어야 authkey를 얻을 수 있나 봅니다.




        result = Replace(str,"a","aad")
        result = Replace(result,"i","in")
        result1 = Mid(result,2,2)
        result2 = Mid(result,4,6)
        result = result1 & result2


이것이 이제 핵심적인 코드라고 할 수 있는데요.


사용된 함수는 Replace()와 Mid() 두개 뿐입니다.


Replace(str, "a", "b")함수는 str의 "a"를 "b"로 치환해 주며, Mid(str, 1, 2)함수는 str의 1번째부터 2개의 문자를 가져옵니다.


.

.

.

그럼 이제 직접 풀어보세요!

.

.

.


.

.

.




위에서부터 하나씩 보면, a를 aad로 바꾸고, i를 in으로 바꾼 문자열에서

2번째부터 2개를 result1에, 4번째부터 6개를 result2에 저장하고

result1+result2가 admin이 되면 됩니다.


그럼 result1이 ad 가 되고 result2가 min이 되어야 하네요.


a가 aad가 되고 거기서 두번째부터 두개를 가져오면 ad가 됩니다.



result2를 생각해보면, 4번째부터 6개를 가져온게 min이 되어야 하고

in은 i가 바뀐 것이니


답은 ami 이네요.




이 문제는 직접 생각하면서 푸는게 이해가 제일 빠를 것 같습니다.



반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [WEB 6번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 5번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 4번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 3번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 2번] 풀이  (0) 2018.07.30
반응형

files  Forensics  PPT


system32.kr의 ppt 문제 풀이입니다.



PPT.md

Can you find FLAG? 
Ex) FLAG{Can_you_Find_Flag}

Make my hanukoon



PPT.zip 파일이 주어진다.


압축을 풀면 OOXML_XXE.pptx가 나온다.


ppt파일은 확장자명을 zip으로 바꿔서 풀면 된다.



이제 파일하나하나 확인해보면 된다...

몇 개 안되니 해볼만 하다



하나하나 열어서 보던중 아무것도 안뜨는 것이 발견되었다.

presentation2\ppt\presentation.xml


플래그 냄새가 나서 HxD로 까보았다.




역시나 플래그가 있었다!


FLAG : FLAG{OPENOFFICEXMLXXE_IS_GOOOOOD!}


반응형

'WAR GAME > System32.kr' 카테고리의 다른 글

System32.kr [CMD] 풀이  (0) 2018.09.02
System32.kr [BigImage] 풀이  (0) 2018.08.31
System32.kr [HardCrypto] 풀이  (0) 2018.07.29
System32.kr [Easy Crypto] 풀이  (0) 2018.07.29
System32.kr [RSA102] 풀이  (0) 2018.07.29
반응형

files  Crypto  HardCrypto


system32.kr의 HardCrypto 문제 풀이입니다.



HardCrypto.md

Do you know Hard Crypto? 
Find the Flag!! 
Ex)FLAG{ABCEDFG} 

Make my pental



Do_you_know_Crypto.txt

c075121115114075121115114075121115114075049115043075122052114075121115043075121115114075121115114075122052114075121115114075121115114075121115114080068119056080067049100080106052043076105115114075121115114075121052116076083048116076083048116076083048116076083052114075121115114075121115117080105115114075121115114075121115114075121115114075121115114075121115114075121115114075121115114076106119116076083048116076083052043076083048116076083048116076083048116076105048116076083048116076083048116076083048116076083048116076083048116076106119116076083048116076083048116076083048116076083048116076083048116076083052043075121115114075121115114075121115114075121115114075121052056075121115114075121115114075121115114075121115114075121115114075121115114075121115114076106052114075121115114075121115114076105048116076083048116076083048116076083048116076083048116076083048116076083052114075121115114075121115114075121052116076083048116076083048116076083048116076083048117080068119114075121115114075121115114075121115114075121115114075121115114075121115114076106052043075121115114075121115114075121115114075121115114075121115114075121115114075121115117076083048116076083048116076083048116076083048116076083048116076083048116076083048117080067052043075121115114075121115114075121115114075121115114075121115114075121115114075121115114075121052116076083048116076083048116076105052114075121115114075121115114075121115114075121052056075121115114075121115114075121115114075121115114075121115114075121115114075121115114075121115114075121052056075121115114075121115114075121115114075121115114075121115114075121115114076106052043076083048116076083048116076083052114075121115114075121115114076105048116076083048116076083048116076083052114075121115114076106119056076083048116076083048116076083048116076083048116076083048116076083048116076083052043080105115114075121115114075121115114075121052061


으어.... 일단 dec 2 string을 해보았습니다.


아스키로 보니 


KysrKysrKysrK1s+Kz4rKys+KysrKysrKz4rKysrKysrKysrPDw8PC1dPj4+LisrKysrKy4tLS0tLS0tLS0tLS4rKysrKysuPisrKysrKysrKysrKysrKysrKysrKysrLjwtLS0tLS4+LS0tLS0tLS0tLi0tLS0tLS0tLS0tLS0tLS0tLjwtLS0tLS0tLS0tLS0tLS0tLS4+KysrKysrKysrKysrKy48KysrKysrKysrKysrKysrKysrKysrLj4rKysrKysrLi0tLS0tLS0tLS0tLS0tLS0tLS4rKysrKysrKy4tLS0tLS0tLS0tLS0uPDwrKysrKysrKysrKysrKysrKysrLj4+KysrKysrKysrKysrKysrKysrKysuLS0tLS0tLS0tLS0tLS0tLS0tLS0uPC4+KysrKysrKysrKysrKysrKysrKysrKy4tLS0tLS0tLi4rKysrKysrKysrKy48KysrKysrKysrKysrKysrKysrKysrKysrKy48KysrKysrKysrKysrKysrKysrLj4+LS0tLS0tLS4rKysrKysrLi0tLS0tLS0tLS4rKysrLjw8LS0tLS0tLS0tLS0tLS0tLS0tLS4+PisrKysrKysrKy4=



처음엔 이 루트가 아닌줄 알았으나.. 마지막에 =을 보고 base64로 디코딩~


++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>.++++++.-----------.++++++.>+++++++++++++++++++++++.<-----.>---------.-----------------.<-----------------.>+++++++++++++.<+++++++++++++++++++++.>+++++++.------------------.++++++++.------------.<<+++++++++++++++++++.>>++++++++++++++++++++.--------------------.<.>++++++++++++++++++++++.-------..+++++++++++.<+++++++++++++++++++++++++.<++++++++++++++++++.>>-------.+++++++.---------.++++.<<-------------------.>>+++++++++.


이건...예전에 어떤 CTF에서 나왔던 문제였다는게 기억났는데...


뭐지뭐지 하다가 brainfuck 언어라는게 기억나서 바로 디코딩했습니다!


FLAG : FLAG{Bra1nFuck_1s_Funny_Crypt0}


반응형

'WAR GAME > System32.kr' 카테고리의 다른 글

System32.kr [BigImage] 풀이  (0) 2018.08.31
System32.kr [PPT] 풀이  (3) 2018.07.29
System32.kr [Easy Crypto] 풀이  (0) 2018.07.29
System32.kr [RSA102] 풀이  (0) 2018.07.29
System32.kr [RSA101] 풀이  (0) 2018.07.29
반응형

files  Crypto  EasyCrpyto


system32.kr의 EasyCrpyto 문제 풀이 입니다. 아마 EasyCrypto 인데 Crpyto로 오타내신듯 하네요.


EasyCrypto.md

How about This Crypto? 
It is Very Easy Crypto! 

Find the Crpyto FLAG!


Ex) FLAG{ABC} <= FLAG(upper) 

Make my pental


어... crypto인지 crpyto인지 으어어어어ㅓㅓㅓㅓㅓㅓㅓ


혀튼 문제파일을 봅시다.



Crypto.txt

WKHUH LV D GLIIHUHQFH EHWZHHQ YROXQWDUB VLPSOLFLWB DQG YROXQWDUB SRYHUWB. YROXQWDUB VLPSOLFLWB VHHPV YHUB PXFK WR PH D PRYHPHQW DEVRUEHG LQWR WKH PBWK RI WKH VXVWDLQDEOH PLGGOH FODVV. SRYHUWB ZDV QRW VHHQ DV SDUWLFXODUOB DWWUDFWLYH, VR LQVWHDG LW EHFDPH VLPSOLFLWB. WKHUH LV D ILQH, FRPSHOOLQJ, EXW KRUULEOB GHVWUXFWLYH VWRUB. LW’V D VWRUB WKDW SURYLGHV HDVH RI PLQG WR HYHUB RQH RI XV ZKR KDV D ZHDNQHVV IRU DOO WKH FRPIRUWV WKDW WKH GRPLQDQW VBVWHP JUDQWV XV ZKLOH VLPXOWDQHRXVOB FUHDWLQJ WKH LOOXVLRQ RI SHUVRQDO UHVSRQVLELOLWB EB WHOOLQJ XV WKDW ZH QHHG D PDVVLYH HIIRUW WR HOHFW D JRYHUQPHQW WKDW ZLOO SURPLVH XV D XWRSLDQ IXWXUH DQG D VXVWDLQDEOH, EURDG-EDVHG SHULRG RI HFRQRPLF JURZWK. BRX FDQ VWLOO EXB BRXU ZDB WR KDSSLQHVV, ZKLFK LV MXVW VOLJKWOB GLIIHUHQW IURP ZKDW WKH PDLQVWUHDP SUHVFULEHV. YROXQWDUB SRYHUWB, RQ WKH RWKHU KDQG, LV EUXWDOOB KRQHVW. WKHUH’V QR JHWWLQJ DURXQG WKH ZRUG “SRYHUWB”?LW PHDQV OHVV PRQHB, OHVV HQHUJB, OHVV UHVRXUFHV. LW PHDQV WKDW BRX FDQ’W EXB BRXU ZDB RXW RI BRXU SUHGLFDPHQW, DQG WKDW LQVWHDG BRX KDYH WR OHDUQ KRZ WR OLYH LQ D IXQGDPHQWDOOB GLIIHUHQW ZDB. LW PHDQV OHVV FRPIRUW DQG OXAXUB, DQG OHDUQLQJ KRZ WR OLYH ZHOO ZLWK WKDW. LQ RWKHU ZRUGV, LI YROXQWDUB VLPSOLFLWB LV WKH HOHFWULF FDU, YROXQWDUB SRYHUWB LV ZDONLQJ WR ZKHUH BRX QHHG WR JR. ZDONLQJ LV KRQHVWB. WKH HOHFWULF FDU LV VWRUBWHOOLQJ. IODJ{MXOLXV_FDHVDU_FUBSWR_VFRUH_1}


매우 긴 문자열이지만 우리가 살펴볼 곳은 오직 맨 마지막입니다.


IODJ{MXOLXV_FDHVDU_FUBSWR_VFRUH_1}


플래그 형식임을 확인할 수 있습니다.



IODJ가 FLAG가 되어야 합니다.

일단 매우매우 쉬운 암호라고 했으니 카이사르로 풀어보겠습니다.



23회 shift 한 결과 I가 F에 맞춰지면서 복호화가 되었습니다. (사실 처음에 치환암호인줄 알고 삽질하다가 힌트가 너무 없어서 엇 카이사르 아닐까 하고 시도해보니 맞았던...)


there is a difference between voluntary simplicity and voluntary poverty. voluntary simplicity seems very much to me a movement absorbed into the myth of the sustainable middle class. poverty was not seen as particularly attractive, so instead it became simplicity. there is a fine, compelling, but horribly destructive story. it’s a story that provides ease of mind to every one of us who has a weakness for all the comforts that the dominant system grants us while simultaneously creating the illusion of personal responsibility by telling us that we need a massive effort to elect a government that will promise us a utopian future and a sustainable, broad-based period of economic growth. you can still buy your way to happiness, which is just slightly different from what the mainstream prescribes. voluntary poverty, on the other hand, is brutally honest. there’s no getting around the word “poverty”?it means less money, less energy, less resources. it means that you can’t buy your way out of your predicament, and that instead you have to learn how to live in a fundamentally different way. it means less comfort and luxury, and learning how to live well with that. in other words, if voluntary simplicity is the electric car, voluntary poverty is walking to where you need to go. walking is honesty. the electric car is storytelling. flag{julius_caesar_crypto_score_1}



플래그는 대문자라고 했으니 대문자로 바꿔주었습니다.


FLAG : FLAG{JULIUS_CAESAR_CRYPTO_SCORE_1}

반응형

'WAR GAME > System32.kr' 카테고리의 다른 글

System32.kr [BigImage] 풀이  (0) 2018.08.31
System32.kr [PPT] 풀이  (3) 2018.07.29
System32.kr [HardCrypto] 풀이  (0) 2018.07.29
System32.kr [RSA102] 풀이  (0) 2018.07.29
System32.kr [RSA101] 풀이  (0) 2018.07.29
반응형

files  Crypto  RSA  RSA102


system32.kr의 rsa102 풀이입니다.



문제 내용입니다.


n : 17492679505633780091591558120277848189

e : 65537

c : 494188309631797349948909951854662875


rsa101에서 주어졌던 p와 q대신에 n이 있네요


n을 인수분해 해줍니다.


https://www.wolframalpha.com/input/?i=factorize+17492679505633780091591558120277848189


2071997351323275967 * 8442423680928995267 이렇게 인수분해가 된 것을 가져다가 rsatool.py을 이용해 d값을 구해줍니다.


mandu@mandu-VirtualBox:~/ex_code$ python rsatool.py -p 2071997351323275967 -q 8442423680928995267 -e 65537

Using (p, q) to initialise RSA instance


n = 17492679505633780091591558120277848189 (0xd28f7afd537f18bb9fd4b093834b07d)


e = 65537 (0x10001)


d = 7016876749372208745463430686590847805 (0x54766bbe8cacd20a60d747bcc474b3d)


p = 2071997351323275967 (0x1cc1369cf52c92bf)


q = 8442423680928995267 (0x7529839ba11e57c3)



d와 n을 이용해서 c를 복호화합니다. c^d mod N [modular Exponentiation]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def powermod3(a, b, n):
    r = 1
    while b > 0:
        if b & 1 == 1:
            r = r * a % n
        b /= 2
        a = a * a % n
    return r
 
#c^d mod N
#a^b mod c
= 494188309631797349948909951854662875
= 7016876749372208745463430686590847805
= 17492679505633780091591558120277848189
 
print powermod3(a, b, c)
cs


mandu@mandu-VirtualBox:~/ex_code$ python modular_Exponentiation.py 

21756137322202345153308749949


복호화된 21756137322202345153308749949을 hex값으로 바꿔주고


https://www.mobilefish.com/services/big_number/big_number.php


464C41477B325F737465707D



아스키로 바꿔주면


https://codebeautify.org/hex-string-converter


FLAG{2_step}


플래그가 나옵니다.



[N 인수분해 사이트를 몰랐다가 최근에 찾아내고, 이 문제가 지금 생각나서 풀이 작성해보았습니다.. 24/02/2019]

반응형

'WAR GAME > System32.kr' 카테고리의 다른 글

System32.kr [BigImage] 풀이  (0) 2018.08.31
System32.kr [PPT] 풀이  (3) 2018.07.29
System32.kr [HardCrypto] 풀이  (0) 2018.07.29
System32.kr [Easy Crypto] 풀이  (0) 2018.07.29
System32.kr [RSA101] 풀이  (0) 2018.07.29
반응형

files  Crypto  RSA  RSA101


system32.kr의 rsa101 풀이입니다.



문제내용입니다.


p : 11820547749265118607908336189140061659994883367758644383099900753008997316272341754974105712436833864387373302687964986221522289414610698068230842231006759

q : 2076478388690715447644222392295584753007140199740835763821170999934221864895193172716587341806099928941239417181782165665806324184552950128351328886814107

e : 65537

c : 15175007508230661949213125841853820919948368859221761481847700530363990883761097704372435675552656459480039957857925187102590466676354015036181849182155680399350099015532296504916485091012255771133872737687990897080899160898509685794777509104691093814282101492973637294053730555124794841034604131492169339102


p, q, e를 이용해 개인키를 생성하고 c를 복호화 하면 될 것으로 보입니다.



rsatool.py를 이용해 개인키를 생성했습니다.


python rsatool.py -p 11820547749265118607908336189140061659994883367758644383099900753008997316272341754974105712436833864387373302687964986221522289414610698068230842231006759 -q 2076478388690715447644222392295584753007140199740835763821170999934221864895193172716587341806099928941239417181782165665806324184552950128351328886814107 -o private.pem


Using (p, q) to initialise RSA instance

n =

22f411ffb9af2f9a00c69a748d13175e23c56414b7b89ca0f3664e94960b5a144933f0ec92dbe2f9

b302d356c9f05a05cd7529bdb5a0e1ac3bbc0acc06d5847335114e0436090c829515321173e4eb44

ad5d538f4333981c7518ad2e8909372be0b0a1438026ac91ac66a6e7ab5974ea20e7423a63de228b

5ca70d0fc26a6c9d


e = 65537 (0x10001)


d =

1bb6e2be9d806681f9b37fac825f6cdbdc091b3dc21ec3326b4be76ab13df702b6b85483803e914d

e3be8dcbf6fa78a6b92df916cef8ed771f360e698fd1a4ded205086eff52626529cd3394508ae2cb

cd7d5f96f25b1212b4752232cb01ebc6cd85a2fc621c16905dce7c415a3336fe8bb98a3f9f1eda26

2a5589f531803091


p =

e1b1a243eff5356b26ffa41b8ad3b2781fcd81d148cf921ab2c31e3adc78108ff3fd25667e661634

3769a8271bada71d0284aa224397f5f4db3a7cde8fcfa627


q =

27a59d6cb8c26315b6f1f572e28c6d3e372a44ebfb5db7279502e608661851e644cde326e615338e

a426774b568f7b070f7cacd1b5c05339ecb468e292d7759b


Saving PEM as private.pem


e는 값을 자동으로 잡아주었네요 ㅇㅅㅇ



이제 생성된 private.pem을 가지고 openssl을 이용해 c를 복호화 하면 되나.... 자꾸 오류가 나서 온라인 복호화툴을 이용하겠습니다... :(


제가 복호화에 이용한 사이트입니다 : http://extranet.cryptomathic.com/rsacalc/index



위에 표시된 n, d, e를 차례로 입력해줍니다.

input data에는 c값을 입력해 주면 되는데, hex값으로 넣어달라고 하기 때문에.. hex로 변환해주어야 합니다.


이 과정도 온라인 툴의 도움을... : https://www.mobilefish.com/services/big_number/big_number.php



변환하면 이런 값이 나옵니다.


159C243DE63E52D8C6F5F37040A43788061847824AADCFC8B26DA05992C5C3DD5D344915F69DCE6961BD199761962CF706BF7D93CA1DC941C42F5302FF1A8F8853A20C591F2C28266502377710B66B44B8701BE4D1A471D0136FCF8BD3EA1813D4BB2C3D6A7C9C9A7A5B2148E52AA386C29887934F53A89F73CD467B3D4950DE



이 값을 input data란에 채워주고 decrypt에 체크한후 calculate해주면 복호화된 값이 출력됩니다.


464c41477b77336c63306d653273797374656d33325f5253415f6330757273657d



이 값도 hex이기 때문에 string형태로 바꿔주겠습니다. https://codebeautify.org/hex-string-converter




FLAG : FLAG{w3lc0me2system32_RSA_c0urse}




반응형

'WAR GAME > System32.kr' 카테고리의 다른 글

System32.kr [BigImage] 풀이  (0) 2018.08.31
System32.kr [PPT] 풀이  (3) 2018.07.29
System32.kr [HardCrypto] 풀이  (0) 2018.07.29
System32.kr [Easy Crypto] 풀이  (0) 2018.07.29
System32.kr [RSA102] 풀이  (0) 2018.07.29
반응형

Reversing.kr Easy Keygen 풀이



압축파일로 주어진다. 압축을 풀자.


압축을 풀면 두개의 파일이 나온다.


- Easy Keygen.exe

- ReadMe.txt



ReadMe.txt 의 내용이다.


ReversingKr KeygenMe



Find the Name when the Serial is 5B134977135E7D13



Easy Keygen.exe 을 실행하면 콘솔창이 띄워지고 Name을 입력받고 Serial을 입력받는다.



패킹은 되어 있지 않으니 올리디버거로 까보자.




strings를 확인해보니 "Correct!"와 "Wrong"이 보인다. 해당 부분으로 이동해주었다.





바로 위 분기점에 bp를 걸었다.



더 위로 올라가면 Serial을 입력받는 부분이 나온다. 입력 받고 난 후에 bp를 또 걸어주었다.


실행하고 name에 1234를, Serial에는 5678을 넣어주었다.




EAX에 5678이 들어갔고 ESI에 21120324가 들어갔다.

ECX에 들어간 값이 name의 값을 어떻게 연산해서 만들어진 값으로 추정된다.


그리고 두개의 값을 비교한다.



그렇다면 name의 값을 연산시켜 나온 값이 Serial의 값과 같아야된다는 것을 알 수 있다.


name을 입력받고 난 후의 코드를 보면 name의 값을 연산하는 루틴이 보인다.



name값에서 한바이트씩 가져와 0x10, 0x20, 0x30과 xor연산을 한다.

0번째 바이트는 0x10과,

1번째 바이트는 0x20과,

2번째 바이트는 0x30과,

3번째 바이트는 0x10과 ....


1234를 입력했을 떼 21120324가 나왔다. Serial 값으로 21120324를 넣으니 Correct가 출력된다.





그럼 이제 Serial이 5B134977135E7D13일때 name의 값을 구하면 된다.


name xor {0x10, 0x20, 0x30} = Serial 일때

name = {0x10, 0x20, 0x30} xor Serial 이므로 name의 값을 구할 수 있다.



이렇게 구한 name의 값은 K3yg3nm3이다.







반응형

'WAR GAME > Reversing.kr' 카테고리의 다른 글

Reversing.kr [Music Player] 풀이  (0) 2018.11.03
Reversing.kr [Easy Unpack] 풀이  (0) 2018.09.19
Reversing.kr [Easy Crack] 풀이  (0) 2018.06.19
반응형

Reversing.kr Easy Crack 풀이


Easy_CrackMe.exe 라는 파일이 하나 주어진다.

실행해 보면 창이 하나 뜬다.






Exeinfo로 까보았다.



별거 없다. 올리디버거로 까보면 될 것 같다.

올리디버거를 실행하자.








우클릭 > search for > all reference strings 에 들어가보았다.



여러개의 문자열들이 보인다. 이중에서 성공메세지로 추정되는 문자열을 더블클릭해주어 문자열이 사용되는 위치로 이동했다.





성공메세지를 출력하는 부분으로 보인다. 더 위로 올라가보았다.




'5y', 'R3versing' 이 문자열들과 입력값을 비교하는 것으로 추정된다.

해당 부분과 위에있는 분기점에서 바로 위에 비교구문에 breakpoint (F2)를 걸어주었다.


그리고 실행하여 1234를 넣어보았다.




첫번째 bp다. a와 [LOCAL.24+1]의 값을 비교하는데, [LOCAL.24+1]의 값은 2이다.

그렇다면 [LOCAL.24]에 우리가 입력해준 값이 들어갔을 것이다.


1234에서 2자리에 a를 넣고 길이를 늘려 1a234567890으로 다시 시도해보았다.





a와 우리가 입력한 a를 비교하면서 해당 분기를 통과한다.



그 다음분기는 조건에 맞지 않아 통과하지 못했다.





이번 분기는 '5y'와 비교한다.

a 다음자리에 5y를 넣은 1a5y2345678을 넣어 해당 분기를 통과했다.






그 다음분기는 R과 우리가 입력한 값중 하나인 2를 비교한다.

그렇다면 다음은 R3versing이 오면 된다는 것이다.


1a5yR3versing을 입력해주었다.





4010DA부터 4010FC의 동작을 잘 살펴보면 이렇다:

R3versing과 우리가 입력했던 문자열중 5번째 자리부터의 문자열을 각각 EAX와 ESI에 저장하고

EAX와 ESI에서 각각 한바이트씩 가져와 DL과 BL에 저장하고 DL과 BL을 비교한다.

비교했을 때 값이 같지 않다면 실패부분으로 이동한다.



잘 입력했다면 해당 분기는 통과한다. 그러나 출력되는 메세지는 실패였다.

원인을 알아보기 위해 실패부분으로 이동하는 부분을 찾아 보았다.




실패 부분으로 이동하기 전에 비교를 한번 더 했다.

E와 1을 비교한다. 여기서 1은 우리가 입력했던 값이므로 1을 E로 바꾸어 시도해주었다.






 성공했다



반응형

'WAR GAME > Reversing.kr' 카테고리의 다른 글

Reversing.kr [Music Player] 풀이  (0) 2018.11.03
Reversing.kr [Easy Unpack] 풀이  (0) 2018.09.19
Reversing.kr [Easy Keygen] 풀이  (0) 2018.06.19

+ Recent posts