본문 바로가기

전체 글

(153)
[Rev] Matrix Lab 1 다운받은 파일을 열어보니 이상한 문자들이 나온다. Olly Dbg 등 리버싱 툴에 넣어봤는데 달리 열리거나 뭔가 나타나지 않았다. 여기서 뭘 더 어떻게 해야할지 몰라 Write Up을 참고하였는데, 리버스 엔지니어링과 자바를 사용해야한다고 한다. 제공된 파일이 .class Java이었던 모양이다. java class decompiler online을 사용하면 되는 모양이지만 아직 자바를 안배워서 생소하다. public class Sekai { private static int length = 6; public static void main(String[] arrstring) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the f..
[Dreamhack] CSRF-2 csrf-2 | 워게임 | Dreamhack csrf-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. Reference Client-side Basic dreamhack.io 문제 파일을 다운받고 접속 정보에 링크 클릭. 첫번째 vuln(csrf) page 클릭하면 나오는 화면. 두번째 flag 클릭하면 나오는 화면. 세번째 login 클릭하면 나오는 화면. 파일 코드. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for from selenium import webdriver import urllib imp..
[SWING] Web Hacking 03 웹 리소스 / 웹 구성요소 웹 클라이언트 (Web Client) 웹을 사용하는 고객으로 필요한 데이터를 웹 서버에 요청(request)하는 주체이다. HTTP (Hyper Text Transfer Protocol) 웹에서 브라우저와 서버 간에 데이터를 주고 받는 약속, 즉 프로토콜이다. OSI 7계층에서 7계층인 응용 계층 (Aplication)에 해당한다. 사용자와 가장 밀접하며 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는 프로토콜 중 하나이다. 암호화되지 않은 평문을 전송하기 때문에 모니터링만 하면 정보를 탈취할 수 있어 sniffing 공격에 취약하다. 웹 브라우저 (Web Browser) 클라이언트의 요청을 받아 request를 웹 서버에 전달하고, 웹 서버로부터 응답받은 res..
[Dreamhack] XSS-2 xss-2 | 워게임 | Dreamhack xss-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. Reference ClientSide: XSS dreamhack.io 문제 파일을 다운받은 뒤 접속 정보의 파란 링크를 클릭. 버튼 세개가 뜨는 것을 볼 수 있다. 첫번째 버튼 vuln 클릭. 두번째 버튼 memo 클릭. 아까 막 들어갔을 땐 hello가 하나였는데 접속할 때마다 hello가 늘어나는 모양이다. memo가 flag를 반환해 출력한다는 것이다. 세번째 버튼 flag 클릭. XSS 필터링이 걸려있어서 input에 입력값을 넣고 XSS 우회를 진행해야 한다고 한다. 구글에 XSS..
[SWING] Web Hacking 02 과제 1 Cookie Cookie (쿠키)는 웹 브라우저에 저장하는 데이터이다. 클라이언트 상태 정보를 로컬에 저장했다가 선별하여 String 형태로 이루어진 Key-value 쌍의 작은 데이터 파일이다. 사용자 인증이 유효한 시간을 명시하고 그 시간이 경과되기 전에는 브라우저가 종료되어도 인증이 유지된다. 이는 Connectionless(클라이언트에게 응답 후 연결을 끊는 비연결지향), Stateless(연결이 끊김과 동시에 통신이 종료되어 정보와 데이터가 유지되지 않음), 이러한 특성을 갖는 HTTP에서 상태를 유지하기 위함이다. HTTP 요청마다 새로운 커넥션을 열기 때문에 사용자 인증을 계속해서 해야한다는 점에 대한 해결책이라 볼 수 있다. 방문 사이트에 로그인 시 "아이디와 비밀번호를 저장하시겠..
[SWING] Web Hacking 01 Web 인터넷은 모든 기종의 컴퓨터들을 연결한 통신망으로 TCP/IP를 사용한다. 웹, 이메일, FTP, DNS 등이 인터넷 서비스에 해당한다. 웹 (World Wide Web)은 하나의 사이트 혹은 사이트들 간의 관계가 복잡하게 얽혀있으며, 하이퍼텍스트 구조를 활용해 수많은 정보들을 연결한다. HTML, HTTP, URL 등으로 구성된다. 웹은 프론트엔드와 백엔드로 나뉜다. 프론트엔드는 눈에 보이는 클라이언트에 위치하는 정적 페이지로 수동적이며 고정적으로 처리되며 단방향 통신이 이루어진다. 주로 사용하는 언어는 HTML, CSS, Javascript 이다. 프레임워크는 Angular JS, Bootstrap을 사용한다. 백엔드는 서버에 위치하는 동적 페이지로 처리도 통신도 실시간으로 이루어진다. 주로 ..
[SWING] Reversing 05 UPX 실행 압축된 노트패트 디버깅 UPX 실행 압축된 notepad_upx.exe를 디버깅하여 실행압축에 대한 개념을 이해하는 것이 목표이다. 즉, 코드를 트레이싱하면서 원본 notepad.exe 코드를 찾아내는 것이라고 할 수 있다. https://github.com/upx/upx/releases 위의 링크에서 upx-3.96-win64.zip 을 다운받는다. 코드 트레이싱 명령 위의 것이 원본 EP 코드이고 아래의 것이 실행 압축된 메모장의 EP 코드이다. Notepad_upx.exe를 디버거로 열어보면 위와 같이 UPX EP 코드가 나타난다. UPX 파일 트레이싱을 해볼 것인데, 이때 “루프(Loop)를 만나면 그 역할을 살펴본 후 탈출한다” 라는 방대한 코드에 대한 원칙이 있다고 한다. 압축 해..
[SWING] Reversing 04 과제 1 RVA to RAW란 PE File이 메모리에 로딩되었을 때, 각 Section에서 16진수의 Memory 주소(RVA)와 File Offset을 매핑(Mapping)하는 과정이다. 여기서 RAW는 File Offset을 의미한다. 기본적인 방법은 다음과 같다. 1. RVA가 속해 있는 section을 찾는다. 2. 다음의 비례식을 이용해서 RAW(File Offset)을 계산한다. RAW - PointerToRawData = RVA - VirtualAddress RAW = RVA - VirtualAddress + PointerToRawData Q2. RVA = 13314일 때 FILE OFFSET = ? RVA = 13314 이므로 ImageBase(01000000)을 고려해 계산해보면 VA ..