rev-basic-41. 문제이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana} 2. Detect It Easy다운받은 chall4.exe 파일의 정보를 추출하기 위해 실행시킨다. 내부를 확인하면 PE64로 컴파일 되었을 뿐 별다른 정보는 존재하지 않는다. 3. x64 dbg디버깅을 시작한다.우선 조건분기를 요청하는 곳까지 실행을 시키도록 한다 조건분기는 아래와 같다. 여기서 je 인 분기점을 통해 "Correc..
rev-basic-31. 문제이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana} 2. Detect It Easy다운받은 chall3.exe 파일의 정보를 추출하기 위해 실행시킨다.내부를 확인하면 PE64로 컴파일 되었을 뿐 별다른 정보는 존재하지 않는다. 3. PE VIEWER우선 DOS_HEADER와 다른 분석은 끝난 상태에서 rdata, data, pdata를 확인하게 된다.rev-basic-2와 동일한 ..
rev-basic-2 풀이1. 문제.이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana} 2. Detect it Easy 사용다운받은 chall2.exe 파일의 정보를 추출하기 위해 실행시킨다. 내부를 확인하면 PE64로 컴파일 되었을 뿐 별다른 정보는 존재하지 않는다. 3. PE VIEWER우선 DOS_HEADER와 다른 분석은 끝난 상태에서 rdata, data, pdata를 확인하게 된다.물론 PE 파일에서 ..
문제 풀이index는 바로 url을 입력받고 curl을 진행하는 페이지이다.소스코드를 확인해보자.$url에 'http' 문자열이 존재하는 지, 확인한다.확인 시, 'http' 문자열이 첫번째 문자열에 포함되어 있다면, 0을 반환한다.단순하게 말하자면, $url 시작이 'http'로 시작해야 else 구문으로 넘어간다. $result 는 GET으로 받은 url을 escapeshellcmd로 ;, |, 등을 이스케이프 처리를 시켜 일반 문자열로 변환한다.하지만, curl 실행은 가능하다.그렇다면, 공격자의 서버에 있는 웹쉘을 요청하고, 경로를 지정해 업로드하면 바로 웹쉘이 업로드 될 것이다.이때에는 curl -o 옵션을 사용한다.curl -o 옵션은 지정한 디렉토리에 요청 결과를 생성한다.아래는 githu..
문제 풀이위는 첫번째 index 파일이며, 두번째는 ; 를 submit 했다.3번째는 ' 를 넣어 에러를 발생시킨 것을 볼 수 있다. ( SQL Injection 가능성 확인 )우선 문제에 포함되어있는 db를 확인한다.위를 정리해서 간략화하면 아래의 테이블 형식이다.idxuidupw1adminDH{**FLAG**}2guestguest3testtest 문제에 나와있는 대로 error base SQL Injection을 시도한다.에러에서 DB가 MariaDB server 인 것을 확인할 수 있다.1' and ExtractValue(1,concat(0x3a,database()))--(공백)위의 코드를 삽입하도록 한다.ExtractValue() 함수는 XML 데이터를 처리할 때 사용하는 함수로, 주어진 XPa..
문제 풀이구성은 첫번째는 index, 두번째는 Login 페이지이다. Home 과 About 페이지는 태그로 ./ 로 되어있어 현재 페이지로 이동한다.별다른 진행을 할 수는 없으므로, 소스코드를 확인한다. app.py#!/usr/bin/python3from flask import Flask, request, render_template, make_response, redirect, url_forapp = Flask(__name__)try: FLAG = open('./flag.txt', 'r').read()except: FLAG = '[**FLAG**]'users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG}# this..
문제 풀이tmitter의 index 페이지는 위와 같다. 위는 로그인, 아래는 회원 가입으로 구성되어 있다.회원 가입 소스코드를 확인하면 하단에 hint가 작성되어있다.admin으로 회원가입을 진행해야한다. 라는 힌트를 준다.필자는 이 문제를 직접 풀지 못했다. 너무 당연하게 생각했고, 안일한 생각이기도 하다.우린 처음 문제를 다시 볼 필요성이 있다.you need login with "admin"s id!===========================create table tmitter_user( idx int auto_increment primary key, id char(32), ps char(32));id, ps 는 32 byte 로 사용한다는 정보다.위 테이블 구성을 보고 어..