Home

[DreamHack] addition-quiz

beginner Description 랜덤한 2개의 숫자를 더한 결과가 입력 값과 일치하는지 확인하는 과정을 50번 반복하는 프로그램입니다. 모두 일치하면 flag 파일에 있는 플래그를 출력합니다. 알맞은 값을 입력하여 플래그를 획득하세요. Code (chall.c) // Name: chall.c // Compile Option: gcc chall.c -o chall -fno-stack-protector #include <stdio.h> #include <signal.h> #include <stdlib.h> #include <fcntl.h> #include &...

Read more

Log4j 2번째 취약점 CVE-2021-45046

몇일전 Log4j 2에서 발견된 Log4Shell(CVE-2021-44228)이 발표되고 해당 취약점을 수정한 Log4j 2.15.0에서 2번째 취약점이 발견되었다. 이는, 해당 패치가 특정 비기본 구성에서 완정하지 않아 발생한 취약점이라고 한다. CVE 설명에는 “이를 통해 공격자는 JNDI Lookup패턴을 사용하여 악의적인 입력 데이터를 조작하여 서비스 거부(DOS) 공격을 발생시킬수 있다.”고 언급되었습니다. Apache에서는 이미 해당 취약점을 패치한 Log4j 2.16.0을 공개하였으며, 해당 패치는 메시지 조회 패턴에 대한 지원을 제거하고, Default로 JNDI기능을 비활성화하여 문제를 해결했...

Read more

[Log4Shell] Log4j 보안 취약점(CVE-2021-44228) 동작원리와 대응방안

2021년 12월 10일 Log4j보안 취약점에 대한 긴급공지가 발표되었다. 이번 발견된 Log4j취약점 Log4Shell은 2021년 11월 24일 Alibaba Cloud 보안팀의 Chen Zhaojun으로부터 발견된 Zero-Day1 취약점으로 12월 9일 트위터에 올라온 게시글로 인해 본격적으로 알려지기 시작했다. 이후 12월 10일 뉴스와 기사에서 발표될 당시에는 이미 취약점 패치를 진행한 후 발표된 One-Day2 취약점인 상태였다. KISA : Apache Log4j 2 보안 업데이트 권고 CVE : CVE-2021-44228 Log4j 란? Log4j는 Apache Software Fo...

Read more

PLT와 GOT를 파헤쳐보자

PLT (Procedure Linkage Table) 외부 프로시저를 연결시켜주는 테이블 PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다. GOT (Global Offset Table) PLT가 참조하는 테이블 프로시저들의 주소가 들어있다. 함수를 호출하면(PLT를 호출하면) GOT로 점프하는데 GOT에는 실제 함수주소가 쓰여있다. 첫 번째 호출이라면 GOT는 함수의 주소를 가지고 있지 않고 ‘어떤 과정’을 거쳐 주소를 알아낸다. 두 번째 호출부터는 첫번째 호출 때 알아낸 주소로 바로 점프한다. 의문점 1. 함수 주소로 바로 점프하면 되지 ...

Read more

[python]pwntools 정리

0x00. pwntools? pwntools는 말 그대로 포너블 툴 킷으로 익스플로잇을 편하게 하기 위해서 사용됩니다. 파이썬으로 작성되어 있으며 from pwn import *을 선언해서 사용할 수 있습니다. Gallopsled라는 팀에 의해서 만들어 졌다고 하네요. pwntools에서 지원해 주는 것은 assemble, disassemble, rop, elf, ssh등이 있습니다. 0x01. Install pwntools은 파이썬의 모듈이기 때문에 기본적으로 파이썬이 설치되어 있어야 한다. # pip install pwntools 리눅스에 설치를 진행한다면 libcapstone-dev를 설치해...

Read more

ARM의 Pipeline

ARM Core는 메모리에 있는 코드를 읽어오고, 해석하고, 실행한다. 이를 Fetch - Decode - Execute라고 한다. 여기서 각 단계 별로 CPU clock을 1cycle 소모한다고 가정해보자. 2개의 어셈블리 명령어가 수행된다고 할 때, 총 6cycle이 필요하게 된다. (사진 상단 파란색). 이때 fetch의 입장으로 볼 때, 처음 fetch가 된 후로 나머지 2cycle동안 쉬게 된다. ARM은 효율적으로 명령을 실행하기 위해 Pipeline을 도입하였다.(사진 하단 연두색). Fetch가 일어나고 다음 명령어를 다음 cycle에서 미리 Fetch한다. 이로인해 4cycle만으로 동일한...

Read more

Return To Library(RTL) 넌 뭐냐?

0x00. 개요 RTL(Return To Library)는 공유 라이브러리에 있는 함수의 주소를 이용해서 바이너리에 존재하지 않는 함수를 사용할 수 있다. 예를들어, 사용자가 입력한 소스코드 내에는 printf함수와 scanf함수만 정의하고 사용하더라도, 라이브러리 내에 있는 system함수를 사용할 수 있다. DEP(Data Execution Prevention) 메모리 보호기법1, 또는 NX bit(Never Execute Bit)2가 적용된 스택을 우회하기 위해 사용한다. 윈도우에서는 DEP라고 하고 리눅스에서는 NX Bit라고 표현한다. 둘다 같은 보호기법이다. (작성중…) ...

Read more

웹 취약점 점검 도구로써의 cURL 사용법

0x00. 개요 cURL은 FTP, 고퍼(Gopher), HTTP, HTTPS, SCP, LDAP등 다양한 통신규악을 지원하는 명령줄 방식의 데이터 전송도구이다. download/upload 모두 가능하며 HTTP, HTTPS, FTP, LDAP, SCP, TELNET, SMTP, POP3 등 중요 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 중요 OS에서 구동된다. “cURL”이라는 이름은 “URL을 보다.(See URL)”라는 의미에서 지었다고 한다. 웹 취약점 분석중에서는 서버응답 헤더 분석, 파일 업로드 자동화 등에 활용할 수 있다. 0x01. 설치 리눅스 시스템에서 다음 ...

Read more