DongDD's IT

[2018 Pragyan CTF] Write-up & 후기 본문

CTF/Write-up

[2018 Pragyan CTF] Write-up & 후기

DongDD 2018. 3. 5. 14:48

[2018 Pragyan CTF] Write-up & 후기


1. Authenticate your way to admin (web, 150p)


Point : 150 point

Category : Web


Problem :

Owen had created an authentication system which lets users login with their email-id or their team name. But that’s not fun is it? Logging in as the admin beats it all, so there’s your challenge.

The portal is running at 128.199.224.175:23000

Note: Use your Pragyan CTF credentials to login to the web portal.


이것 외에 login.php와 homepage.php 두 가지 소스 코드 파일이 주어졌다.


login.php

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
<?php
 
session_start();
 
require "helpers.php";
 
$type = $_POST['id_type'];
$identifier = $_POST['identifier'];
$password = $_POST['password'];
$_SESSION['id'= $identifier;
 
if($type === 'team_name') {
    $team_name = $identifier;
    $_SESSION['id_type'= 'team_name';
 
    if(verify_teamname_password($team_name, $password) === true) {
        $_SESSION['logged_in'= true;
        redirect('/homepage.php');
    }
    else {
        die("Invalid Team Name-Password combination !!");
    }
}
else if ($type === 'email') {
    $email = $identifier;
    $_SESSION['id_type'= 'email';
 
    if(verify_email_password($email, $password) === true) {
        $_SESSION['logged_in'= true;
        redirect('/homepage.php');
    }
    else {
        die("Invalid Email-Password combination !!");
    }
}
 
?>
cs

homepage.php

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
 
session_start();
 
require "helpers.php";
 
if(! check_login())
    redirect($LOGIN_URL);
 
$id_type = $_SESSION['id_type'];
$id = $_SESSION['id'];
 
?>
 
<!DOCTYPE html>
<html>
<head>
    <title>Homepage</title>
</head>
<body style='background-color: #d6eaf8'>
 
<p style="float: right">
<a href='/logout.php'> Logout </a>
</p>
<p style="clear: both"></p>
 
<p style='height:30px; width:100%;'> </p>
 
<center>
    
<h2> Welcome User !! </h2>
<br><br>
 
<h3>
<?php
if($id_type === 'email') {
    echo "Email :- ".$id;
}
elseif ($id_type === 'team_name'
{
    echo "Team Name :- ".$id ;
}
?>
</h3>
<br><br>
 
<h4>
Here's a random funny saying for you :) <br>
</h4>
<br><br>
<?php
    require "sayings.php";
    printf(get_random_saying());
    echo "<br><br>";
    if($id === 'admin' && $id_type === 'team_name')
        printf(output_flag());
?>
</center>
</body>
</html>
cs

login.php는 위와 같이 되어있었고 POST방식을 통해 SESSION을 설정해 입력한 값들이 올바른 값이라면 homepage.php로 redirect시킨다.

homepage.php에서는 처음에 login_check함수를 통해  login시 설정되는 세션 "logged_in"을 검사한다. 이 후에 로그인이 되어 있는 상태로 (id==admin && id_type == "team_name")이면 flag를 보여주는 형식으로 되어있다.


이 ctf를 참가할 때 생성한 아이디와 Team_name으로 설정해 Login하면 다음과 같은 page가 나온다. 이 상태에서 $_SESSION["logged_in"]이 true가 되어있지만 id가 admin이 아니기 때문에 flag가 출력되지 않는다.

이 상태에서 url을 통해 login.php로 넘어가 admin을 입력해 login하고 homepage.php로 다시 넘어오게 되면 admin인 상태로 로그인된 것처럼 되어 flag를 볼 수 있다.


Answer & Flag



Flagpctf{4u1h3ntic4Ti0n.4nd~4u1horiz4ti0n_diff3r}



2. Quick Response


Point : 100 point

Category : forensics


Problem

Tony had created a QR code for a specific purpose, and sent to his friend Rhody for deployment but when deployed, the QR code wasn’t working as it was supposed to. Figure out what’s wrong and help fix the problem.


문제에 첨부된 qr코드 파일이다. qr코드 스캔 사이트를 통해 스캔해보니 아무 값도 없다고 한다.

qr코드에 대해 잘 몰랐어서 찾아보니 11시,1시,7시에 있는 네모 모양이 항상 고정되어있는 것을 알 수 있었다.

이 부분을 덧붙혀서 수정해서 qr코드 스캔을 해보니 flag를 알 수 있었다.



Answer & Flag


ref) QR code Scan : http://www.onlinebarcodereader.com/

Flag : pctf{r3p4ir1nG~Qr_1s-my_h0bBy}



3. Assemble your way to the flag

Point : 50 point

Category : Reversing


Problem :

My friend was trying out assembly for the first time, he has no clue what he's doing, help him out and procure your reward in the form of a flag :)




IDA를 통해 disassemble 해보니 위와 같은 main 코드 하나만 딱 주어져있었다.  저 숫자들을 char형으로 바꿔주니 flag를 볼 수 있었다.


Answer & Flag




Flag :  pctf{l3geNds_c0d3_1n_4Ss3mb1y}



4. Scientist's research

Point : 150p

Category : Stego


Problem :

Mary, a data scientist, specializing in CNN, has been working on a problem, she has recorded her observations in a table. Have a look at the data and deduce the flag.


observations.xlsx 엑셀 파일이 주어져있었다.



이것을 축소시켜서 확인해보니 빈칸들이 글자를 이루는 것을 볼 수 있었고 이 것이 flag라는 것을 알 수 있었다.



Answer & Flag



Flag :  pctf{ord3r_out_of=ch4os+this_world}




후기


Crypto와 binary 두가지 카테고리가 더있었는데 두 개는 아예 풀지 못했다. binary는 풀 수 있었던 것 같은데 너무 쉽게 포기했던 것 같고 crypto는 아예 손을 대지 못했다. crypto 문제에 대해서 좀 더 풀어봐야겠다는 생각이 들었다.

1일 좀 넘게있는 대회 시간이 주어졌는데 이번 ctf는 시간 투자를 많이 안한 것 같다.

쉬운 문제들이 많아 몇개를 풀 수 있었던 것 같다.



Comments