전체 글 26

[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