분류 전체보기 21

[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

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

IDA 간단한 팝업창 만들기

액션은 처음에 먼저 등록이 되어야 한다 한 번 등록한 액션은 계속 사용할 수 있다 등록된 액션은 메뉴, 툴바, 팝업창 등에 연결시킬 수 있다 액션은 핸들러를 가지고 있는 데 activate, update 의 두 가지 콜백 함수를 가진다. → Activate 는 액션이 실행될 때 호출되며, update 는 현재 액션이 사용 가능한지 아닌지를 알려 줄 수 있게 해 준다 1. 액션 만들기 idaapi.action_desc_t(고유이름, 설명, 핸들러, 단축키, 메뉴와툴바의툴팁, 아이콘) load_custom_icon() 으로 사용자 지정 아이콘을 등록할 수 있다. ACTION_TEST = "testplugin:actiontest" class PopupActionHandler(idaapi.action_handl..

Study/IDA 2021.03.22

IDA Python Plugin

1. 플러그인 로딩 IDA세션 시작은 IDA시작시 이뤄짐. 사용자 입력을 받기 전과 대기 상태에 들어가기 전에 신규 바이너리를 분석 하거나 또는 기존 DB를 분석. 그 동안 플러그인이 로딩 된다 2. 플러그인이 로딩되는 경우 DB로딩과 관계없이 IDA시작시에 로딩될 수 있다. PLUGIN.flags의 PLUGIN_FIX 비트의 설정여부에 달려있다 프로세서 모듈 실행 후 즉시 플러그인이 로딩된다. 프로세서 모듈이 언로드 될때까지 로딩된 상태로 남아있는다. PLUGIN.flags의 PLUGIN_PROC 비트에 달려있다 위에서 언급한 플래그 비트가 없다면 DB가 열릴때마다 플러그인 로딩환경을 만들어준다 3. 플러그인 로딩 과정 기본적으로 PLUGIN.init 함수로 플러그인을 로딩하는데 이 때 위의 3가지 상..

Study/IDA 2021.03.11