목록분류 전체보기 (186)
Iriton's log
서버에 접속하면 문자들이 빠른 속도로 날라다닌다.별도 소스파일을 제공하지 않아서 개발자모드로 코드를 파악해 보자. 코드를 보니까 img file 배열이 있다. 1부터 순서대로 저장되어 있는 게 아니라서 해당 img 파일을 순서대로 조합하면 flag가 나올 거 같았다. 개발자모드에 source 탭이 있어서 여기에 이미지 파일이 있으려나 하고 봤는데역시나 있었다.img file 배열에 저장된 순서대로 조합을 해보자.Too_H4rd_to_sEe_th3_Ch4rs_x.x 드림핵 flag format에 맞게 제출하면 정답이 뜬다.
서버에 접속해 보면 input1과 input2를 제출하도록 구성되어 있다. 아무거나 입력해서 확인해 보니까 check.php로 넘어가면서 Try again 문자열이 뜬다.이것만 봐서는 뭔지 모르겠으니까 소스코드를 분석해 보자. 입력 후 이동한 URL을 보면 check.php 이다. 입력을 처리하는 소스코드가 check.php 파일에 있을 것 같으니문제 파일에서 check.php를 봐야 한다.웹 디자인을 위한 코드를 제외하고 본격적으로 살펴봐야 할 소스코드는 위와 같다.22: require_once 함수는 다른 php 파일의 클래스를 읽어오는 것이다. 따라서 flag.php를 읽어오는 코드이다.25~28: POST 메서드로 클라이언트가 입력한 값 input1과 input2를 서버로 보낸다.30번째 줄부터는..
Description 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_000)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다. 취약점 분석 a#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, ala..
https://eunginius.tistory.com/entry/Exploit-Tech-Return-Address-Overwrite Exploit Tech: Return Address Overwrite *본 포스트는 Dreamhack - Systemhacking Lecture 을 참고하여 작성되었습니다. 분석 취약점 분석/트리거 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); eunginius.tistory.com 위 글에 Exploit까지 다 나와 있는데, 본 포스트는 단지 pwntools 사용에 익숙해지기 위해 작성된 ..
*본 포스트는 '유선배 SQL개발자 과외노트' 도서를 참고하여 작성되었습니다.01. 관계형 데이터베이스 개요데이터베이스용도와 목적에 맞는 데이터들끼리 모아서 저장여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합관계형 데이터베이스RDB(Relational Database)모든 데이터를 2차원 테이블 형태로 표현한 뒤 각 테이블 간의 관계를 정의하는 것으로 시작RDBMS는 이러한 RDB를 관리감독하기 위한 시스템Oracle, SQL Server, MySQL 등등TABLE세로 열을 Column가로 행을 Row관계형 데이터베이스의 기본 단위일반적으로 데이터베이스는 여러 개의 테이블로 구성테이블 형태로 데이터 조회/변경SQL(Structured Query Language)DB에서 데이터를 다루기 위..
*본 포스트는 Dreamhack - Systemhacking Lecture 을 참고하여 작성되었습니다. 분석 취약점 분석/트리거 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf..
welcome Description 이 문제는 서버에서 작동하고 있는 서비스(welcome)의 바이너리와 소스 코드가 주어집니다. "접속 정보 보기"를 눌러 서비스 정보를 얻은 후 플래그를 획득하세요. 서버로부터 얻은 플래 dreamhack.io 리버싱 문제를 풀다가 nc 명령어로 지정된 호스트와 포트번호를 활용해서 서버에 접속할 수 있다는 걸 깨달았기에 써먹어 봤다. 플래그가 바로 떴다. 허무... 그래도 코드 분석을 해보자. flag 폴더를 연다. fseek 함수는 파일 포인터를 이동시키는 함수이다. ftell은 현재 위치를 long 타입 정수형으로 출력한다. 현재 위치가 파일의 끝이기 때문에(SEEK_END로 끝까지 이동했다.)파일 전체 크기를 반환해서 flag_len 변수에 넣은 거다. 다시 처음..
simple-operation Description 우리의 친구 아모가 미션을 주었습니다. "내가 원하는 결과가 나오도록 값을 입력해 줘!" 주어진 바이너리를 분석하고 알맞은 값을 입력하면 플래그가 출력됩니다. 플래그는 flag 파일에 dreamhack.io 풀이 코드의 흐름을 먼저 보자. 17-20: flag 파일을 열어서 파일 디스크립터를 fd 변수에 담는다. 45바이트만큼 읽어서 buf 변수에 받고 다시 닫는다. 21: 난수를 v6에 저장한다. 24: v7에는 사용자 입력값을 받는다. 25: v6 ^ v7 은 XOR 연산을 의미한다. 26: snprintf 함수는 출력 결과를 문자열 버퍼에 저장하는 함수이다. 버퍼의 크기를 지정하여 버퍼 오버플로우를 방지하는데 여기서는 9uLL로 지정했다. 9는 버..