전체 글 23

[SQL Injection] Pentesterlab 문제 풀이1

[Example 1] 1. 소스코드 확인 가장 간단하고 필터링이 없는 코드이다. 2. SQL Injection 페이로드 입력 ' or '1=1-- 입력으로 공격에 성공하였다. 전체 테이블이 조회가 가능하다 [Example 2] 1. 소스코드 확인 공백을 필터링 한다 2. 필터링 우회 공백 대신 %09(Tab 문자)를 사용한다. → '%09or%09'1=1— [Example 3] 1. 소스코드 확인 정규표현식에 뭔가가 추가되었다 %09를 쓸 수 없다 2. 필터링 우회 %09 대신 /**/(주석) 을 사용한다. → '/**/or/**/'1=1— [Example 4] 1. 소스코드 확인 mysql_real_escape_string 함수가 추가되었다. 2. mysql_real_escape_string php에서..

Web 2022.11.02

[SQL Injection] 종류 및 Prepared Statement

1. 개요 Web Application에서 DB로 전달하는 정산적인 SQL Query를 변조하여 비 정상적인 쿼리문을 전달해 DB 접근을 시도, 보통 사용자의 입력 데이터가 적절하게 검증되지 못하고 SQL쿼리로 바로 입력되기 때문에 발생 DB와 연동되는 스크립트의 모든 파라미터들을 점검하여 사용자들의 입력값이 SQL Injection을 발생시키지 않도록 수정하고, 허용되지 않는 문자열이나 문자가 포함된 경우에는 에러로 처리하여 에러 내용을 사용자에게 보여주지 않고 별도 페이지로 설정한다 ✅ Stored procedure(저장 프로시저), Prepared Statement 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. Prepared Statement 구문을 사용하게 되면 사용자의 입..

Web 2022.11.01

[HTTPS 프로토콜] HSTS 헤더

HTTP Strict-Transport-Security response header HTTP 대신 HTTPS만을 사용하여 통신해야 한다고 웹 사이트에 브라우저가 알리는 보안 기능 HTTP 요청을 받고 301이나 302 응답을 통해 HTTPS로 리다이렉트 하는 경우에 리다이렉트 되기 이전의 암호화 되지 않은 버전의 사이트와 통신하게 된다. HSTS 헤더는 HTTP로 연결하려는 모든 시도는 자동으로 HTTPS로 변경해야 한다고 알린다. preload 설정 시 최초 통신부터 HTTPS로 설정된다 preload가 설정된 주소에 HTTP로 접속하려 하는 경우 307 응답으로 HTTPS가 적용된 페이지로 내부 재 전송 한다 HSTS Preload List란 HSTS가 적용된 웹 사이트의 명단을 모아둔 리스트 정보 ..

Web 2022.10.31

[한글] 악성코드 분석 2

로드한 프로세스가 notepad.exe 가 아니라면 다른 프로세스 별로 다른 동작을 합니다. 우선 explorer.exe 인 경우, Sub_10052FA 함수를 호출합니다. Sub_10052fA 에서는 우선 필요한 함수 주소들을 로드합니다. 그리고 Elevation:Administrator!new:{3ad05575-8857-4850-9277-11b85bdb8e09} 이라는 값을 사용하는데, 이 값은 iFileOperation 의 CLSID 값을 정의한 것으로 해당 값으로 보았을 때 UAC 에서 관리자 권한이 사용되고 있음을 알 수 있습니다. 다음 코드는 sysprep.exe를 이용하여 악성 cryptbase.dll을 로드합니다. UAC 우회기법이 사용되고 있음을 알 수 있습니다. 그리고 다음 svchos..

[한글] 악성코드 분석 1

1. 개요 소위자료(2014.2.25) 수석전문위원소관.hwp 이라는 제목의 한글 악성코드 샘플 분석을 진행하였다. Filename 6dc8ec7ab4a774e6811279135af863da9db94a22.input Size 262KiB (268288 bytes) Description Hangul (Korean) Word Processor File 5.x Architecture WINDOWS SHA256 71abdc099d4cc2848e1eb3dda7f798ae819028052a34bc6a2b47bc3ec4fca59c 다음 악성코드에서 사용된 취약점은 문단의 레이아웃을 담당하는 HWPTAG_PARA _LINE_SEG의 구조체에서 발생하였다. 이 구조체를 개체 컨트롤 구조체로 착각하고 사용하여 흐름을 바꾸..

Linux Study - Gdb, 함수 프롤로그/에필로그

1. GDB 실행방법 gdb -q [파일이름] or gdb [파일이름] gdb를 실행해 준다. list [파일이름] 소스코드를 10줄 단위로 보여 줄 수 있다. r 프로그램을 실행해 준다. k 프로그램 실행을 종료한다. bt 역추적, 오류가 발생한 함수를 역으로 찾아간다. b [함수], [주소] 함수, 주소에 브레이크포인트를 설정해 준다. main + [숫자] 와 같은 연산도 가능다. cl [함수], [주소] 함수의 시작부분이나 숫자의 행에 있는 브레이크 포인트를 지워준다. si 다음 행으로 진행, 함수가 있을 시 내부로 들어간다. ni 다음 행으로 진행, 함수가 있을 시 내부로 들어가지 않고 건너뛴다. disas [함수], [주소] 함수 또는 주소를 어셈블리 언어로 보여준다. x/[표현식] [주소], ..

Study/Basic Study 2021.06.27

Linux Study - Compile, 파일 권한, Assembly

1. Compile이란? 우리가 짠 소스코드를 컴퓨터가 이해 할 수 있는 기계어로 바꾸는 과정, gcc -o [만들어줄 파일이름] [컴파일할 파일 이름]으로 컴파일 해줄 수 있다. 프로그래밍 언어->어셈블리어->기계어의 순서를 거친다 1.1 전처리(Pre-processor) 컴파일을 시도할 경우 먼저 전처리기의 과정을 거친다 해당 헤더파일의 디렉토리를 찾아서 삽입해 준다 #define 이 있을 경우 이를 치환해 준다. gcc -E -o [만들어줄 파일이름.i] [컴파일할 파일이름] 으로 해 줄 수 있다. 1.2 컴파일러(Compiler) 우리가 작성한 소스코드를 읽어서 연산자,괄호,식별자와 같은 문법 요소별로 잘라서 이 문법 요소들을 해석해서 구문 트리를 생성해 주고, 이 트리로부터 어셈블리어 코드를 만..

Study/Basic Study 2021.06.21

Linux Study - 리눅스 쉘, 구조, 메모리 구조

1. 리눅스 쉘(SHELL) 리눅스는 커널(Kernel)과 쉘(Shell), 유틸리티(Utility), 응용 프로그램 (Application)으로 이루어져 있다. 쉘 은 컴퓨터의 메모리에 항상 떠있는 하나의 프로그램인 운영체제의 커널과 사용자 사이를 이어주는 역할을 한다. 사용자의 명령어를 해석해서 운영체제가 알아들을 수 있도록 해 준다. bash 쉘: 실행파일은 /bin/bash, 명령행 편집 기능을 제공한다. sh 쉘: 가장 오랫동안 모든 유닉스 시스템의 표준 구성 요소이며, 명령 프로그래밍 언어 기능을 가지고 있는 쉘이다. 2. 디렉토리 구조 /(루트): 최상위 디렉토리, 모든 디렉토리들이 루트 디렉토리에서부터 시작한다. /bin: 리눅스를 사용할 때 mv,rm,cp 등과 같은 명령어들이 저장 되어..

Study/Basic Study 2021.05.04

[2020 POX] mobile_pentest_binary Write-up

파일을 열면 다음과 같은 apk 파일이 나옵니다. 저는 안드로이드 핸드폰이 없어 apk파일을 실행할 수 없기 때문에 바로 jadx-gui 로 디컴파일을 진행하였습니다. classes.dex 파일을 열면 다음과 같은 코드들이 보입니다 중요한 파일은 com.example.mobilepentest의 MainActivity 입니다. Mainactivity의 medicine 함수를 보면 다음과 같은 코드가 보입니다. 여기에서 getResources 는 resource, res 폴더에 있는 값을 가져와줍니다. res → raw → flag.txt 라는 파일이 있고 내용은 다음과 같습니다. 그리고 다음의 코드는 input의 값에따라서 flag.txt 에있는 문자열을 하나씩 가져와줍니다. input 의 값은 다음과 같..

CTF 2021.04.09

[PyQt4] Example

IDA 플러그인 작성을 위해선 PyQt도 꼭 필요합니다. 저는 조사당시 Python 2.7을 사용하고 있어서 PyQt4를 기준으로 문서를 작성하였습니다. 1. 위젯 사용하기 from PyQt4.QtGui import * class MyDialog(QDialog): def __init__(self): QDialog.__init__(self) lblName = QLabel("Name") editName = QLineEdit() btnOk = QPushButton("OK") layout = QVBoxLayout() layout.addWidget(lblName) layout.addWidget(editName) layout.addWidget(btnOk) self.setLayout(layout) app = QApp..

Study/IDA 2021.03.28