전체 글 171

command-injection-chatgpt

command-injection-chatgpt 문제 정보 특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. 풀이 먼저 접속하면 이런 화면이 뜬다. 이 페이지는 특정 Host에 ping 패킷을 보내는 서비스를 제공한다. 제공된 웹 페이지에서 입력한 Host로 ping을 보내는 기능이 있다. 입력란에 127.0.0.1을 입력했다. 핑 결과가 화면에 출력되었다. 20번 줄을 보면 해당 코드는 변수 **host**에 지정된 IP 주소나 도메인 이름으로 3회의 ICMP 패킷을 보내는 ping 명령어를 실행하는 명령어 문자열을 생성한다. ping 명령어는 특정 호스트에 대한 응답 시간을 측정하는 명령어이다. 이 때,..

command-injection-1

command-injection-1 문제 정보 특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는에 있습니다. 풀이 처음 접속 화면이다. Ping 탭으로 들어가보면 Host 밑에 입력 폼이 있다. input 속성의 placeholder가 8.8.8.8 이므로 그대로 입력해서 Ping!버튼을 눌러봤다. 다음과 같이 Ping 결과가 잘 출력되는 것을 확인해보았다. 다시 돌아와 8.8.8.8; ls를 입력해서 Ping! 버튼을 눌렀더니 형식을 일치시키라고 나온다. 문제 코드를 한 번 살펴보겠다. 문제 코드에는 해당 형식을 지정해주는 코드는 없는 것 같다. import subprocess from flask import Flask, requ..

simple_sqli

simple_sqli 문제 정보 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 풀이 먼저 사이트 접속하면 제일 처음 Login 탭이 있다. Home, About, Contact 다 똑같은 화면이다. Login 페이지는 userid와 password 입력란이 있다. 문제를 살펴보자 from flask import Flask, request, render_template, g import sqlite3 import os import binascii app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open('./flag.txt', 'r').read() ..

simple_sqli_chatgpt

simple_sqli_chatgpt 문제 정보 어딘가 이상한 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 사이트에 접속하면 이런 화면이 뜬다. 로그인 페이지에는 'userlevel'이라는 입력 필드가 있으며, 이 필드를 이용하여 로그인이 가능하다. 여기서 문제를 살펴보면 해당 코드는 다음과 같은 동작을 수행한다. "database.db"라는 파일이 현재 디렉토리에 존재하지 않으면, SQLite 데이터베이스를 생성한다. 생성된 데이터베이스에 'users'라는 이름의 테이블을 생성한다. 이 테이블은 'userid', 'userpassword', 'userlevel'이라는 3개의 컬럼을 가진다. 'guest'와 'adm..

CSRF-2

문제 정보 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. 풀이 해당 주소로 들어가면 이렇게 나온다. 먼저 문제에서 15번 줄을 보고 id: guest pw: guest로 로그인 해봤다. 로그인하면 Hello guest, you are not an admin이라고 바뀐다. vuln(csrf) page에 들어가보면 구문이 작동하지 않는 걸 알 수 있다. 하지만 는 사용 가능하기 때문에 구문은 사용할 수 있다. 문제에 보면 /change_password에서 user[username] = pw 를 봤을 때 flag를 통해 change_password 로 암호를 변경하는 파라미터를 보내면 된다. 를 flag 페이지에서 넣어주면 된다. 그러면 adm..

CSRF-1

문제 정보 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. 풀이 사이트에 접속하면 이런 화면이 나온다. vuln(csrf) page에 들어가보면 부분은 출력되고 script는 출력되지 않기 때문에 html 구문을 넣어서 csrf 공격을 수행하면 될 것 같다. memo 페이지에 접속하면 memo 파라미터로 hello를 전달하고 출력하는 걸 볼 수 있다. notice flag 페이지에서는 Access Denied라고 나온다. 문제를 살펴보면 /admin/notice_flag 부분에서 userid가 admin이면 flag가 나올 것이다. 따라서 flag 페이지에서 를 넣어주면 memo 페이지에 flag가 나온다.

XSS-2

문제 정보 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{…} 입니다. 풀이 접속하면 XSS-1 과 비슷하다. vuln 페이지에 들어가보면 이번엔 가 작동하지 않는 걸 확인할 수 있다. 따라서 이를 우회할 수 있는 다른 방법을 사용해야 한다. 우회 기법을 찾아보니 SVG 공격을 찾을 수 있었다. SVG 태그는 벡터 그래픽을 표현할 때 사용되는데 이 태그를 이용하여 XSS 테스트가 가능하다. 따라서 flag 페이지에 를 입력하면 memo창에 flag 값인 쿠키를 찾을 수 있다.

XSS-1

문제 정보 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{…} 입니다. 풀이 먼저 사이트에 접속해보면 이런 화면이 나온다. vuln 페이지에 들어가보면 url에 써있는 ' return '' memo_text = "" check_xss 함수를 보면 param 과 cookie를 인자로 받는다. 여기서 param은 url에 의해 바뀌면서 read_url 함수를 사용해 리턴된다. def check_xss(param, cookie={"name": "name", "value": "value"}): url = f"" return read_url(url, cookie) 따라서 para..

Session-basic

문제 정보 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 플래그 형식은 DH{…} 입니다. 풀이 먼저 사이트에 접속하면 이런 화면이 나온다. 다음은 Login 페이지이고 username과 password 입력란이 있다. 여기서 문제를 살펴보겠다. from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'user'..

기업 IT 인프라 구성의 이해

인프라 정의 인프라 사전적 정의 기반 시설, 기간 시설 또는 인프라스트럭처(Infrastructure) 경제 활동의 기반을 형성하는 기초적인 시설과 시스템을 의미 IT 인프라의 사전적 정의 IT 서비스의 기반이 되는 정보 기술 구성 요소의 집합으로 광범위하게 정의 네트워크, 서버, 데이터베이스 등 IT 서비스의 기반이 되는 시스템 및 구조를 의미 IT 인프라 구성 요소 하드웨어(Hardware) 인프라를 구성하는 물리적 요소 서버, 스토리지, 전원장치 등 운영체제(Operating System) 하드웨어와 네트워크 기기를 제어하기 위한 기본 소프트웨어 서버, 스토리지, 전원 장치 등 네트워크(Network) 사용자가 서버로 액세스할 수 있도록 연결하는 요소 라우터, 스위치, 방화벽, VPN 등 미들웨어(..