728x90
반응형
728x90
반응형

728x90
반응형

Title
Memoryyyyy Dumpppppp

Description
Korean
어느날 나는 커피집에서 노트북을 놓고 잠시 자리를 비웠다.
그리고 다시 와서 작업을 하다가 작업프로그램이 갑자기 꺼졌고, 작업파일들이 모두 다 삭제되었다.
원인을 찾기위해 나는 서둘러 메모리 덤프를 만들었다.
이 메모리 덤프파일을 분석하여 다음 정보를 알아내자.

키 형식 : (Process Name_PID_Port_Process Execute Time(Day of the week-Month-Day-Hour:Min:Sec-Years)
ex (explorer.exe_1234_7777_Mon-Jan-01-12:00:00-2012)

English
One day, I put the laptop in a coffee house, Left for a minute.
And had come back to work. Then work program has been shut down and all work file was deleted.
To find the cause I'm in a hurry and made a memory dump.
Let 's find out information through analyze memory dump file.

Key Format : (Process Name_PID_Port_Process Execute Time(Day of the week-Month-Day-Hour:Min:Sec-Years)
ex (explorer.exe_1234_7777_Mon-Jan-01-12:00:00-2012)





volatility를 사용했다.



vol.py -f '/root/Desktop/xczprob2' imageinfo



winXP 운영체제를 사용한다.


 vol.py -f '/root/Desktop/xczprob2' --profile=WinXPSP3x86 connections

프로세스 하나가 사용한것을 확인할 수 있다.




vol.py -f '/root/Desktop/xczprob2' --profile=WinXPSP3x86 pstree


범인은 nc.exe였다.



authkey : nc.exe_1124_80_Fri-Nov-02-09:06:48-2012





728x90
반응형

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

XCZ.kr [prob 26] 풀이  (0) 2018.09.11
XCZ.kr [prob 25] 풀이  (0) 2018.09.11
XCZ.kr [prob 23] 풀이  (0) 2018.09.11
XCZ.kr [prob 22] 풀이  (0) 2018.09.11
XCZ.kr [prob 21] 풀이  (0) 2018.09.10
728x90
반응형

Title
Zero & One

Description



제목이 0과 1이다.





파일명이 0과 1로 된 파일들이 여러개 들어있는데 내용을 보면 어떤 값이 들어 있다.





이 값은 md5해쉬값이다. 디코딩을 하면 정수가 나온다. 파일 순서인듯 하다. 파일 순서를 맞추어 파일명을 정렬해보았다.


1111111011010111101111111

1000001010101010001000001

1011101011011001101011101

1011101010011101001011101

1011101001010101001011101

1000001010101110001000001

1111111010101010101011111

0000000001110010100000000

1100111000011000100101111

0110110001010111100010110

0000101100010011101011000

1010010010101011101001101

1011101000111000111000101

1111010001011011100011100

0011101001011011010001000

0000010010011010011000110

1100011001001101111110100

0000000010110001100010110

1111111000110111101010000

1000001010111010100010101

1011101011111000111111110

1011101001110111101000011

1011101000111111101101010

1000001011110000010111110

1111111010111000000000111



qr코드 같은 느낌이 난다.


qr코드로 만들어서 read하면 http://xcz.kr/prob23_pr0b1em_file.html

링크가 하나 나온다.


0111011001011111001100100
1011111011100100101111101
1110010101111101100111010
1111100110000010111110011
0000010111110110010001011
1110111001101011111011001
0101011111011011100101111
1011100110101111101100101


이게 키다.



이를 아스키로 변환하면 v_2_r_y_g_0_0_d_s_e_n_s_e


authkey : v_2_r_y_g_0_0_d_s_e_n_s_e


728x90
반응형

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

XCZ.kr [prob 25] 풀이  (0) 2018.09.11
XCZ.kr [prob 24] 풀이  (0) 2018.09.11
XCZ.kr [prob 22] 풀이  (0) 2018.09.11
XCZ.kr [prob 21] 풀이  (0) 2018.09.10
XCZ.kr [prob 20] 풀이  (0) 2018.09.10
728x90
반응형

Title
Who's Notebook?

Description
Korean
내친구 A는 어느날 출근길에 누군가 잃어버린 것 같은 노트북을 발견한다.
A는 이 노트북을 주인에게 찾아주고 싶지만 찾을 방법을 몰라서 포렌서인 나에게 노트북을 맡기게된다.
이 노트북의 주인을 찾아주자.

인증키 형식 : 출발지_거쳐가는곳(1곳)_최종도착지
인증키는 모두 대문자로, 띄어쓰기무시
예) PLACE1_PLACE2_PLACE3 


English
On the way to work one day, my friend found a laptop that someone lost like.
He wanted to give back to the owner laptop.
but, he doesn't know how to know owner.So, he leave laptop to me.

AuthKey : Origin_Stopover(1 Place)_Final Destination
AuthKey is composed of UpperCase and replace space with null
Ex) PLACE1_PLACE2_PLACE3




주어진 파일의 시그니처를 보자




ADSEGMENTEDFILE 이미지 파일임을 알 수 있다. 파일명에 확장자명 .ad1을 붙여주고 ftk imager로 열면 된다.





파일들을 살펴보던 중에 gps관련 파일을 찾을 수 있었다. 이 파일을 추출해 보았다.



gpsnote.net에 접속해 보았다.




프로그램이 있나보다 다운받아보았다. 이 프로그램에서 위 파일을 열기위해선 확장자명을 바꾸어 주어야 했다. .gpx로 바꾸었다. 그리고 열었다.






경로가 나온다. 공덕역 -> 김포공항역 -> 동부렌트카




그런데 이게 아니다.


authkey : GONGDEOK_GIMPOINTERNATIONALAIRPORT_7-ELEVEN

728x90
반응형

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

XCZ.kr [prob 24] 풀이  (0) 2018.09.11
XCZ.kr [prob 23] 풀이  (0) 2018.09.11
XCZ.kr [prob 21] 풀이  (0) 2018.09.10
XCZ.kr [prob 20] 풀이  (0) 2018.09.10
XCZ.kr [prob 19] 풀이  (0) 2018.09.10
728x90
반응형

Title
PHP Obfuscation Crack

Description

Wrong T.T




소스보기를 하면 php코드가 나온다.


<html>
<head>
<link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon">
<title>Prob21</title>
</head>
<body style="background-image:url('../images/content-tail.gif');">
<b>Title</b></br>
<i>PHP Obfuscation Crack</i></br></br>
<b>Description</b></br>
<font size="2px">
<a href="prob_files/prob21.html" target="_blank">View source</a></br></br>
<?
${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x67\x61\x73y\x61\x72\x6b\x6e\x64"]="\x62";${"\x47\x4c\x4f\x42AL\x53"}["r\x77\x6cii\x69\x71\x66\x76\x66\x70"]="i";function h($a){${"\x47\x4cO\x42\x41L\x53"}["\x70x\x7a\x77\x65\x61h\x72\x75\x71\x6f\x6b"]="\x62";${${"\x47LO\x42\x41\x4c\x53"}["\x70\x78z\x77\x65\x61\x68\x72u\x71\x6f\x6b"]}="";${"GL\x4fB\x41\x4c\x53"}["u\x78\x6fi\x69i\x6b\x61pcv"]="\x62";for(${${"\x47\x4c\x4f\x42A\x4c\x53"}["r\x77\x6c\x69\x69i\x71\x66\x76fp"]}=0;${${"\x47\x4c\x4f\x42A\x4cS"}["\x72\x77l\x69i\x69\x71\x66\x76\x66\x70"]}<5;${${"G\x4c\x4f\x42\x41\x4c\x53"}["\x72\x77\x6ci\x69\x69qf\x76\x66\x70"]}++){$ydzorvqk="\x61";$gflrozo="\x62";${"\x47\x4cOB\x41\x4cS"}["\x65\x72p\x78\x7a\x6fz\x64\x65y"]="i";${$gflrozo}=${${"G\x4c\x4f\x42AL\x53"}["\x67\x61sy\x61\x72k\x6e\x64"]}+ord(substr(${$ydzorvqk},${${"\x47\x4c\x4f\x42ALS"}["\x65rp\x78\x7a\x6fz\x64e\x79"]},1));}return${${"\x47\x4c\x4fBA\x4cS"}["\x75x\x6fi\x69i\x6b\x61\x70\x63v"]};}$jbojdbertutk="\x4b\x45\x59";$vtefigaylx="mu\x6e";${"G\x4cOB\x41L\x53"}["\x68p\x63eeyx\x74o"]="\x61";$ktjmdjm="a";${"\x47\x4c\x4f\x42ALS"}["\x6d\x69mt\x65\x6du\x63\x79\x62\x70c"]="\x6d\x75\x6e";${$jbojdbertutk}="\x43o\x6e\x67\x72a\x74\x75\x6ca\x74\x69\x6f\x6es\x21</\x62r\x3e\x4be\x79\x20i\x73 ?????????????????????";${"GL\x4f\x42\x41\x4cS"}["\x67\x6d\x66i\x66\x62f\x6c"]="\x61";${${"G\x4c\x4f\x42AL\x53"}["\x6d\x69\x6d\x74em\x75c\x79\x62p\x63"]}=@$_GET["\x6b\x65y"];${"GL\x4f\x42A\x4c\x53"}["w\x76d\x63\x78\x73\x64\x73\x71b"]="x";@${$ktjmdjm}=explode("-",${$vtefigaylx});$gfxqkfxurga="\x78";$dlmordkk="\x61";for(${${"\x47\x4c\x4fBA\x4cS"}["w\x76\x64\x63\x78\x73\x64\x73\x71b"]}=0;${${"\x47\x4c\x4f\x42\x41LS"}["\x77v\x64\x63\x78s\x64\x73\x71\x62"]}<5;${$gfxqkfxurga}++){if(preg_match("/[^a-\x7a\x41-\x5a\x30-\x39]/",@${${"\x47\x4cOB\x41\x4c\x53"}["\x68pc\x65e\x79\x78\x74\x6f"]}[${${"\x47\x4cO\x42A\x4c\x53"}["\x77vd\x63\x78\x73ds\x71\x62"]}])){exit("\x45rr\x6f\x72!");}}if(is_numeric(substr(${${"\x47LO\x42\x41\x4c\x53"}["\x68p\x63e\x65y\x78to"]}[0],0,2))&&!is_numeric(substr(${${"\x47\x4c\x4f\x42\x41\x4cS"}["\x68\x70\x63ee\x79\x78t\x6f"]}[0],4,1))&&h(${${"\x47\x4c\x4f\x42\x41\x4c\x53"}["gm\x66\x69fbfl"]}[0])>312&&h(${${"\x47L\x4f\x42A\x4cS"}["h\x70\x63e\x65yx\x74\x6f"]}[0])<333&&!is_numeric(substr(${$dlmordkk}[1],0,1))&&is_numeric(substr(${${"\x47\x4c\x4fB\x41LS"}["hpc\x65ey\x78to"]}[1],3,2))){$qcpkjlbgy="\x61";${"G\x4c\x4f\x42\x41\x4c\x53"}["\x6f\x71\x6f\x74\x6a\x62\x76\x6e"]="\x61";${"G\x4cO\x42ALS"}["bb\x67h\x7a\x6f\x74"]="\x61";if(h(${${"\x47\x4c\x4f\x42\x41LS"}["b\x62g\x68z\x6ft"]}[1])>300&&h(${$qcpkjlbgy}[1])<326&&!is_numeric(substr(${${"GL\x4f\x42\x41\x4c\x53"}["hp\x63\x65\x65yx\x74o"]}[2],0,1))&&is_numeric(substr(${${"\x47LO\x42AL\x53"}["\x68\x70c\x65e\x79xt\x6f"]}[2],1,1))&&h(${${"GLO\x42\x41L\x53"}["o\x71o\x74\x6a\x62\x76n"]}[2])>349&&h(${${"\x47\x4c\x4fB\x41\x4cS"}["h\x70c\x65\x65\x79x\x74o"]}[2])<407){${"\x47L\x4fBA\x4cS"}["\x77\x73ju\x78\x77\x78bz\x6d\x73"]="\x61";${"\x47\x4cOB\x41\x4c\x53"}["o\x66\x76\x6d\x69\x61\x74\x63\x64ko"]="a";$oqhejquzit="a";if(!is_numeric(substr(${${"G\x4c\x4fBA\x4cS"}["\x77\x73\x6au\x78\x77\x78bz\x6d\x73"]}[3],0,2))&&is_numeric(substr(${$oqhejquzit}[3],2,3))&&h(${${"GL\x4f\x42\x41\x4c\x53"}["o\x66\x76\x6di\x61\x74\x63\x64\x6b\x6f"]}[3])>357&&h(${${"\x47\x4c\x4fBA\x4cS"}["hp\x63\x65ey\x78\x74\x6f"]}[3])<359){${"G\x4c\x4f\x42\x41L\x53"}["\x65rq\x71jp\x63t"]="\x61";${"G\x4c\x4fBAL\x53"}["ok\x67\x6f\x6e\x64\x66\x69\x64\x6b\x79"]="\x61";if(round((h(${${"G\x4c\x4f\x42A\x4c\x53"}["\x68\x70c\x65\x65y\x78t\x6f"]}[0])+h(${${"\x47\x4c\x4f\x42\x41L\x53"}["\x6fkg\x6f\x6ed\x66\x69\x64\x6b\x79"]}[1])+h(${${"\x47\x4c\x4f\x42AL\x53"}["h\x70c\x65e\x79\x78\x74\x6f"]}[2])+h(${${"\x47L\x4f\x42A\x4cS"}["h\x70\x63e\x65\x79\x78\x74o"]}[3]))/4)==h(${${"\x47L\x4f\x42ALS"}["\x65\x72\x71\x71\x6a\x70ct"]}[4])){$oaqqkxn="\x4b\x45\x59";exit(${$oaqqkxn});}}}}echo"\x57\x72ong\x20\x54.T";
?>
</font>
</body>
</html>



hex인코딩 부분을 바꾸고, 코드를 예쁘게 정렬했다.


http://ddecode.com/hexdecoder/


http://www.phpformatter.com/




<?
${"GLOBALS"}["gasyarknd"]   = "b";
${
"GLOBALS"}["rwliiiqfvfp"] = "i";
function 
h($a)
{
    ${
"GLOBALS"}["pxzweahruqok"]    = "b";
    ${${
"GLOBALS"}["pxzweahruqok"]} = "";
    ${
"GLOBALS"}["uxoiiikapcv"]     = "b";
    for (${${
"GLOBALS"}["rwliiiqfvfp"]} = 0; ${${"GLOBALS"}["rwliiiqfvfp"]} < 5; ${${"GLOBALS"}["rwliiiqfvfp"]}++) {
        
$ydzorvqk                  "a";
        
$gflrozo                   "b";
        ${
"GLOBALS"}["erpxzozdey"] = "i";
        ${
$gflrozo}                = ${${"GLOBALS"}["gasyarknd"]} + ord(substr(${$ydzorvqk}, ${${"GLOBALS"}["erpxzozdey"]}, 1));
    }
    return ${${
"GLOBALS"}["uxoiiikapcv"]};
}
$jbojdbertutk                   "KEY";
$vtefigaylx                     "mun";
${
"GLOBALS"}["hpceeyxto"]       = "a";
$ktjmdjm                        "a";
${
"GLOBALS"}["mimtemucybpc"]    = "mun";
${
$jbojdbertutk}                = "Congratulations!</br>Key is ?????????????????????";
${
"GLOBALS"}["gmfifbfl"]        = "a";
${${
"GLOBALS"}["mimtemucybpc"]} = @$_GET["key"];
${
"GLOBALS"}["wvdcxsdsqb"]      = "x";
@${
$ktjmdjm} = explode("-", ${$vtefigaylx});
$gfxqkfxurga "x";
$dlmordkk    "a";
for (${${
"GLOBALS"}["wvdcxsdsqb"]} = 0; ${${"GLOBALS"}["wvdcxsdsqb"]} < 5; ${$gfxqkfxurga}++) {
    if (
preg_match("/[^a-zA-Z0-9]/", @${${"GLOBALS"}["hpceeyxto"]}[${${"GLOBALS"}["wvdcxsdsqb"]}])) {
        exit(
"Error!");
    }
}
if (
is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[0], 02)) && !is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[0], 41)) && h(${${"GLOBALS"}["gmfifbfl"]}[0]) > 312 && h(${${"GLOBALS"}["hpceeyxto"]}[0]) < 333 && !is_numeric(substr(${$dlmordkk}[1], 01)) && is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[1], 32))) {
    
$qcpkjlbgy               "a";
    ${
"GLOBALS"}["oqotjbvn"] = "a";
    ${
"GLOBALS"}["bbghzot"]  = "a";
    if (
h(${${"GLOBALS"}["bbghzot"]}[1]) > 300 && h(${$qcpkjlbgy}[1]) < 326 && !is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[2], 01)) && is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[2], 11)) && h(${${"GLOBALS"}["oqotjbvn"]}[2]) > 349 && h(${${"GLOBALS"}["hpceeyxto"]}[2]) < 407) {
        ${
"GLOBALS"}["wsjuxwxbzms"] = "a";
        ${
"GLOBALS"}["ofvmiatcdko"] = "a";
        
$oqhejquzit                 "a";
        if (!
is_numeric(substr(${${"GLOBALS"}["wsjuxwxbzms"]}[3], 02)) && is_numeric(substr(${$oqhejquzit}[3], 23)) && h(${${"GLOBALS"}["ofvmiatcdko"]}[3]) > 357 && h(${${"GLOBALS"}["hpceeyxto"]}[3]) < 359) {
            ${
"GLOBALS"}["erqqjpct"]    = "a";
            ${
"GLOBALS"}["okgondfidky"] = "a";
            if (
round((h(${${"GLOBALS"}["hpceeyxto"]}[0]) + h(${${"GLOBALS"}["okgondfidky"]}[1]) + h(${${"GLOBALS"}["hpceeyxto"]}[2]) + h(${${"GLOBALS"}["hpceeyxto"]}[3])) / 4) == h(${${"GLOBALS"}["erqqjpct"]}[4])) {
                
$oaqqkxn "KEY";
                exit(${
$oaqqkxn});
            }
        }
    }
}
echo 
"Wrong T.T";
?>



흠... 이렇게 해도 알아보기 쉬운편은 아니다.



한글 프로그램을 이용해 난독화된 변수명을 간단하게 바꾸었다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php < ?
function h($a)
    {
    $b = "";
    for ($i = 0$i < 5$i++)
        {
        $b = $b + ord(substr($a$i1));
        }
 
    return $b;
    }
 
${"KEY"= "Congratulations! Key is ?????????????????????";
$mun = @$_GET["key"];
@$a = explode("-"$mun);
 
for ($x = 0$x < 5$x++)
    {
    if (preg_match("/[^a-zA-Z0-9]/", @$a[$x]))
        {
        exit("Error!");
        }
    }
 
if (is_numeric(substr($a[0], 02)) && !is_numeric(substr($a[0], 41)) && h($a[0]) > 312 && h($a[0]) < 333 && !is_numeric(substr($a[1], 01)) && is_numeric(substr($a[1], 32)))
    {
    if (h($a[1]) > 300 && h($a[1]) < 326 && !is_numeric(substr($a[2], 01)) && is_numeric(substr($a[2], 11)) && h($a[2]) > 349 && h($a[2]) < 407)
        {
        if (!is_numeric(substr($a[3], 02)) && is_numeric(substr($a[3], 23)) && h($a[3]) > 357 && h($a[3]) < 359)
            {
            if (round((h($a[0]) + h($a[1]) + h($a[2]) + h($a[3])) / 4== h($a[4]))
                {
                exit(${"KEY"});
                }
            }
        }
    }
 
echo "Wrong T.T";
?>
 
cs



함수 h는 문자5개를 아스키값으로 변환해 전부 더해준다.




get 방식으로 key값을 받고 이 값을 $mun에 담는다. 그리고 이 값을 -를 기준으로 잘라서 $a배열에 담는다.


그 다음 반복문을 보니 $a배열에 5개의 값이 들어있고, 알파벳과 숫자로만 이루어진 문자열이어야 한다.


그 다음 조건들에 맞아야 key를 얻을 수 있다.


is_numeric(substr($a[0], 02)) &&
!is_numeric(substr($a[0], 41)) &&
h($a[0]) > 312 && h($a[0]) < 333 &&


a[0]

- 1번째 2번째에 숫자가 와야한다.

- 5번째는 숫자가 아니어야 한다.

- 아스키값의 총합이 312초과, 333미만


 


!is_numeric(substr($a[1], 01)) &&
is_numeric(substr($a[1], 32)) &&
h($a[1]) > 300 && h($a[1]) < 326 && 


a[1]

- 1번째에 숫자가 아니어야 한다.

- 4번째 5번째는 숫자가 와야한다.

- 아스키값의 총합이 300초과, 326미만




!is_numeric(substr($a[2], 01)) && is_numeric(substr($a[2], 11)) && h($a[2]) > 349 && h($a[2]) < 407 &&

a[2]

- 1번째에 숫자가 아니어야 한다.

- 2번째는 숫자가 와야한다.

- 아스키값의 총합이 349초과, 407미만




!is_numeric(substr($a[3], 02)) && is_numeric(substr($a[3], 23)) && h($a[3]) > 357 && h($a[3]) < 359 &&


a[3]

- 1번째에 숫자가 아니어야 한다.

- 3번째 4번째 5번째는 숫자가 와야한다.

- 아스키값의 총합이 357초과, 359미만




round((h($a[0]) + h($a[1]) + h($a[2]) + h($a[3])) / 4== h($a[4]))

각 원소의 아스키값의 합의 평균이 a[4]의 아스키값의 합과 같아야 한다.



11X1a-a3399-a1d88-aa668-aa011



authkey : what_the_fuckin_0bfuscati0n


728x90
반응형

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

XCZ.kr [prob 23] 풀이  (0) 2018.09.11
XCZ.kr [prob 22] 풀이  (0) 2018.09.11
XCZ.kr [prob 20] 풀이  (0) 2018.09.10
XCZ.kr [prob 19] 풀이  (0) 2018.09.10
XCZ.kr [prob 18] 풀이  (0) 2018.09.10
728x90
반응형

Title
Bonus Problem!

Description
 



보너스 문제! 





속성 - 자세히 에 key가 있다.


authkey : tagtagtagDETAIL

728x90
반응형

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

XCZ.kr [prob 22] 풀이  (0) 2018.09.11
XCZ.kr [prob 21] 풀이  (0) 2018.09.10
XCZ.kr [prob 19] 풀이  (0) 2018.09.10
XCZ.kr [prob 18] 풀이  (0) 2018.09.10
XCZ.kr [prob 17] 풀이  (0) 2018.09.10

728x90
반응형

Title
Web Basic

Description

wrong T.T



소스를 보면 php소스가 나온다.


<html> 
<head> 
<link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon"> 
<title>Prob18</title> 
</head> 
<body style="background-image:url('../images/content-tail.gif');"> 
<b>Title</b></br> 
<i>Comming Soon</i></br></br> 
<b>Description</b></br> 
<font size="2px"> 
View source</br> 
<? 
$key 
"Congratulations!</br>Key is ??????????????????"
$liillillilliliili = @$_COOKIE['c']; 
$liillillliiiliili = @$_GET['g']; 
$lilllillliiiliili = @$_POST['p']; 
if(empty(
$liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');} 
$lililillliiiliili $liillillliiiliili $liillillilliliili
$lilililliiiiliill $lilllillliiiliili

function 
test($a){ 
$b ''
    for(
$i=0$i strlen($a); $i++){ 
        
$b $b ' - ' ord(substr($a,$i,1)); 
    } 
    return 
$b

if(
test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
    echo 
$key

else{ 
    echo 
'wrong T.T'

?> 
</font> 
</body> 
</html>



$liillillilliliili = @$_COOKIE['c']; 
$liillillliiiliili = @$_GET['g']; 
$lilllillliiiliili = @$_POST['p']; 
if(empty(
$liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');} 


cookie, get, post 방식으로 값들을 받는다. 모두 값이 존재해야 한다.




$lililillliiiliili $liillillliiiliili $liillillilliliili
$lilililliiiiliill $lilllillliiiliili;


function test($a){ 
$b ''
    for(
$i=0$i strlen($a); $i++){ 
        
$b $b ' - ' ord(substr($a,$i,1)); 
    } 
    return 
$b

if(
test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
    echo 
$key

else{ 
    echo 
'wrong T.T'


난독화를 풀어보자.


A = get. cookie

B = post


function test.... 생략


if(test(A).....생략....|| test(B)...생략



A에는 get으로 받은 문자열과 cookie로 받은 문자열이 더해지게 된다.





function test($a){ 
$b ''
    for(
$i=0$i strlen($a); $i++){ 
        
$b $b ' - ' ord(substr($a,$i,1)); 
    } 
    return 
$b


test함수를 살펴보면, 문자열의 문자들을 아스키 값으로 변환한다.



if(test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
    echo 
$key


따라서, A에는 givemepassword라는 값이, B에는 keyplz!라는 값이 들어있어야 key값을 출력해준다.


get으로 g값에 g를 담고, cookie로 c값에 ivemepassword를 담고, post로 p값에 keyplz!를 넘겨주면 된다.



burp suite를 사용했다.





재밌다.



authkey : web_basic_problem_haha




728x90
반응형

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

XCZ.kr [prob 20] 풀이  (0) 2018.09.10
XCZ.kr [prob 19] 풀이  (0) 2018.09.10
XCZ.kr [prob 17] 풀이  (0) 2018.09.10
XCZ.kr [prob 16] 풀이  (0) 2018.09.10
XCZ.kr [prob 15] 풀이  (0) 2018.09.10
728x90
반응형

Title
Password Recover...

Description
Hi, I'M ZZANGHACKER.
I Lost My Password in XCZ.KR T.T
Help Me!!




XCZ.KR에서 ZZANGHACKER의 패스워드를 찾아야 하는 문제이다.

.pcapng파일이 주어진다. wireshark로 열어보자.




ZZANGHACKER 는 가입할때 패스워드로 IDISLIE로 설정했다.


authkey : IDISLIE

728x90
반응형

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

XCZ.kr [prob 19] 풀이  (0) 2018.09.10
XCZ.kr [prob 18] 풀이  (0) 2018.09.10
XCZ.kr [prob 16] 풀이  (0) 2018.09.10
XCZ.kr [prob 15] 풀이  (0) 2018.09.10
XCZ.kr [prob 14] 풀이  (0) 2018.09.10

+ Recent posts