728x90

분류 전체보기 272

LOB Level2 gremlin

소스코드버퍼의 크기가 16정도 밖에 안된다. 쉘 코드를 전부 넣을 수 없다. 일반적으로 쉘 코드는 buffer에 삽입 하지만, 무조건 쉘 코드는 buffer에 삽입되어야 하는 것은 아니다.* 쉘 코드를 넣을 만한 공간이 있어야 하고, 공간의 주소를 알 수 있어야 함스택 공간에 쉘 코드를 삽입하면 된다는 것(write-up 보면 환경 변수 이용해서도 문제를 풀 수 있는 것 같은데, 아직은 이해가 안되서 넘김) ret 이후에 nop 를 많이 넣고, ret를 바꿔주면 된다. 정확히 알지 못해도 nop가 있기 때문에 쉘 실행이 가능하다. 참고 자료https://marcokhan.tistory.com/202

워게임/LOB 2025.10.26

LOB level1 gate

소스코드 시나리오버퍼 안에 쉘 코드를 삽입 해놓고, 스택 버퍼 오버플로우를 일으킨 후 ret 주소를 버퍼의 주소로 바꾸면 된다.0x90 이 시작되는 곳을 보면 버퍼의 주소를 구할 수 있다.main을 디스어셈블 했을 때 ebp 등등 이므로 32bit로 유추할 수 있다.그러면 ebp는 4바이트 라는 것을 알 수 있다.쉘 코드 적당한 것을 찾아서 payload 작성하면 해결 할 수 있다. 여기서 wsl로 telnet을 진행했는데, 쉘 코드가 정상적으로 실행이 안되길래 문제가 무엇인지 고민을 해보다가, putty 깔아서 해보니까 됬다. (정확한 이유는 모름)맨 처음 gdb로 디버깅 하면 at&t 로 되어있는데 아래의 명령어를 통해서 intel 문법으로 할 수 있음set disassembly-flavor intel

워게임/LOB 2025.10.23

SIEM & EDR & XDR 개념

SIEM (Security information and event management 보안 정보 및 이벤트 관리)소프트웨어 제품 및 서비스가 SIM(보안 정보 관리)과 SEM(보안 이벤트 관리)을 결합한다네트워크 전체 범위에서 로그를 수집, 저장 및 분석한다. 신속한 공격 탐지, 차단 및 응답을 위해 보안 위협을 실시간으로 모니터링하여 인프라 보안을 위한 이기종 정보, 이벤트를 수집하고 보안 위반에 대한 경보를 보여준다. EDR (Endpoint Detection and Response)엔드포인트(Endpoint)에서 일어나는 보안 위협을 탐지하고 대응하는 시스템이다.각 컴퓨터 안에서 일어나는 행동을 실시간으로 감시하고, 이상 징후를 자동으로 분석하고 대응하는 보안 솔루션이다.주로 호스트/엔드포인트에서의..

network 2025.10.23

웹 서버 에러코드

HTTP의 상태 코드는 client가 보낸 http 요청이 성공했는지 실패했는지를 서버에서 알려주는 코드이다. 3자리 숫자로 이루어져 있고, 100번대 ~ 500번대 까지 존재한다.첫 번째 자리에 따라 나뉘어 진다.1xx (정보) : 요청을 받고 처리 중임을 알린다.2xx (성공) : 요청이 정상적으로 처리됨3xx (리다이렉션) : 요청한 리소스가 다른 위치로 이동했다.4xx (클라이언트 오류) : 잘못된 요청 이다. 즉 클라이언트 쪽 문제이다.5xx (서버 오류) 요청은 맞는데 서버가 처리하지 못한다. 대표적인 코드2xx : 성공200 OK -> 성공 응답 (요청이 정상적으로 처리가 되었다.)201 Created -> POST 요청으로 새로운 리소스 생성 성공204 No Content -> 성공했지만 ..

Web Hacking 2025.09.23

Fortify

어떤 프로그램 리눅스에서 소스를 빌드를 하다가 흔히 만나는 오류 중 하나가 있다.undefined reference to `__memset_chk'bof 와 같은 메모리 관련 취약점을 막기 위해 gcc 같은 컴파일러에서 제공하는 보호기법소스코드에서 잠재적인 취약점을 탐지하고 런타임에 추가 검사를 통해 보안 향상을 한다.bof가 감지되면 프로그램을 종료한다. Fortify의 동작 방식은 buffer overflow가 발생할 때 감지할 수 있는 특정 C 라이브러리 함수의 향상된 버전을 제공하는 방식으로 작동한다. strcpy, memcpy, sprintf, memset, fprintf 등의 함수를 사용하면 컴파일 과정에서 __strcpy_chk, _-memcpy_chk로 변경한다.취약한 함수가 호출되면 fo..

fuzzing101 Exercise 1

Xpdf PDF 뷰어를 퍼징하고 cve-2019-13288 에 대한 크래시와 POC을 찾는 것이 목표입니다. CVE-2019-13288xpdf 4.01.01에서 parser.cc의 parset::getObj() 함수가 조작된 파일을 통해서 무한 재귀를 유발한다고 합니다.https://nvd.nist.gov/vuln/detail/CVE-2019-13288딱 봐도 스택 오버플로우 같습니다. 이 문제를 해결하게 되면 배우는 것이- 계측을 통한 대상 애플리케이션 컴파일- 퍼저(afl-fuzz) 실행- 디버거를 사용해 충돌 분류 환경Ubuntu 20.04.02 LTS에서 테스트 되었고, 퍼징 결과의 차이를 피하기 위해 동일한 OS 버전을 추천합니다. xpdf 3.0.2 다운wget https://dl.xpdfre..

python struct

python에서 정수, 문자열은 자유롭게 다룰 수 있다.하지만, C언어 스타일의 바이트 단위 데이터(바이너리 데이터)를 다뤄야 할때 문제가 발생한다.ex) 네트워크 패킷, 파일 포맷, 메모리 덤프 등등이런 것들은 전부 바이트 스트림으로 표현이 된다.ex)import struct# 정수 1024를 4바이트로 패킹data = struct.pack(" > 빅 엔디언! 네트워크 바이트 순서@ 시스템 기본= 시스템 기본 + 표준 크기 자료형 기호b signed charB unsigned charh shortH unsigned shorti intI unsigned intq long longQ unsigned long longf floatd doubles char[]p pascal string 여러 값을 패킹을 할 ..

코딩/파이썬 2025.09.08

[pwnable.kr] random

key ^ random 한 것이 0xcafebabe 일 경우에 플래그 값을 얻을 수가 있습니다.key는 사용자의 입력으로 받고, rand() 함수에 대해 알기만 하면 문제를 쉽게 해결 할 수 잇을 것 같습니다. rand() rand 함수는 랜덤한 숫자를 반환하는 함수입니다. 그런데 프로그램이 생성될 때 값이 정해지기 때문에 프로그램을 여러번 실행시켜도 동일한 값이 나옵니다. rand함수는 내부적으로 어떤 srand의 매개변수로 들어온 seed 값과 매칭되는 숫자가 정해집니다. 그래서 seed 값에 의해서 rand 함수의 결과값이 변할 수 있습니다. https://blockdmask.tistory.com/308 브포를 걸고 DWORD PTR [rbp-0x1c], eax 이므로 eax값이 어떤 값인지 알아보..

728x90