본문 바로가기

전체 글

JWT 개념과 취약점 JWT란?JWT(JSON WEB TOKEN)은, JSON 데이터 구조로 표현한 토큰으로써, 네트워크를 통해서 서로 다른 장치끼리 안전하게 전송하기 위해 설계된 토큰이다.구성 요소JWT는 크게 세 파트로 나누어지며, 각 파트는 점을 이용해서 구분된다. Header해시 암호화 알고리즘과 토큰의 타입으로 구성된 섹션이다.첫 번째는 HMAC, SHA256 또는 RSA와 같은 서명 생성에 사용된 해시 알고리즘이며,두 번째는 토큰의 유형(JWT)을 말한다.PayloadPayload에 담는 정보의 한 조각을 클레임이라고 부르며, name / value의 한 쌍으로 이루어진다.토큰에는 여러 개의 클레임들을 넣을 수 있으며, 클레임의 정보는 등록된 클레임, 공개 클레임, 비공개 클레임으로 세 종류가 존재한다. -> 실제.. 더보기
eBPF 정리하기 안녕하세요. 굉장히 오랜만에 글을 쓰는 것 같습니다.아무래도 현생이 너무 바빠져서 블로그에 신경을 좀 못 썼는데, 종강도 했으니 다시 글을 많이 적어보려고 합니다. 최근에, 제가 다니는 보안 연구실에서 eBPF 관련해서 연구가 시작되어서 내용 정리할 겸 글을 적어보려고 합니다.현재 작성 중인 글은 아래 링크에서 참고해서 적은 글임을 먼저 밝힙니다.https://ebpf.io/ko-kr/what-is-ebpf/eBPF?eBPF는 기본적으로 운영 체제 커널과 같은 특별한 권한이 있는 환경에서 샌드박스 프로그램을 실행시킬 수 있는 리눅스 커널의 기술에서 기원한 기술입니다.이는 커널 소스 코드를 바꾸거나, 커널 모듈을 로드하지 않고도 기존 커널의 기능을 안전하고 효율적으로 확장시키는 것에 사용됩니다.훅 개요eB.. 더보기
KMPlayer 원데이 취약점 분석 (2) 지난 번에 이어서 적겠습니다.사실 퍼징을 계속 돌려봤는데, 크래시 재현이 안되는 파일들이 너무 많아서, 아래 글을 참고해서 크래시를 일으킬 수 있는 파일을 직접 만들어보았습니다.https://hackyboiz.github.io/2021/03/24/l0ch/bughunting-tutorials-part3/ hackyboizhack & lifehackyboiz.github.io 그리고 KMPlayer에 windbg를 attach해서 크래시를 재현해보았는데, 다음과 같에 레지스터에 제가 작성한 값들이 overwrite되는 것을 확인했습니다.이제 이 값들이 어디서 오는지를 확인해보도록 하겠습니다.ub eip는 현재 명령어(eip) 이전의 명령어들을 역어셈블해서 보여달라는 명령어입니다. 즉, 우리는 바로 이전 명.. 더보기
puts 함수 분석을 통한 FSOP 공격 기법 분석 FSOP 공격에 대해서 공부하던 중, puts 함수가 실행될 때 공격이 터지는 것을 보고, puts 함수의 동작 방식을 분석하고, 어떤 부분에서 공격이 터지는 지를 확인해보았습니다. 먼저 처음에는 문자열의 길이를 계산하기 위해 j_strlen 함수를 호출합니다.실제로 modify finished라는 문자열을 출력하기 위해서 puts가 호출되는데, 이 때문인지 rdi 레지스터에 "modify finished!"라는 문구가 들어가있는 것을 확인할 수 있었습니다.그리고 반환 값을 보았을 때, 출력하고자 하는 문자열의 길이인 0x10이 반환 레지스터인 RAX에 들어가 있는 것을 확인할 수 있었습니다.그 다음, 밑에 가다보면 이런 부분이 있습니다.stdout + 17은 정확히 말하자면 stdout + 0x8 * .. 더보기
KMPlayer 원데이 취약점 분석 (1) 원데이 취약점 분석을 해보고 싶어서 관련 글을 찾던 중 흥미로운 글을 발견했습니다. https://hackyboiz.github.io/2021/03/17/l0ch/bughunting-tutorials-part2/#%EB%B2%84%EA%B7%B8%EB%B0%94%EC%9A%B4%ED%8B%B0-KMPlayer hackyboizhack & lifehackyboiz.github.io 정말 딱 제가 원하던 형식이라서 바로 시도해보았습니다. 저는 이때까지 취약점이 존재하는 버전을 다운받기가 힘들어서 버그헌팅 실습을 못하고 있었는데, 이번 기회로 한 번 해볼 수 있어서 매우 좋았습니다. 아래 글은 위 글을 참고해서 작성된 내용입니다. 먼저 KMPlayer로 dib 파일을 실행할 수 있기 때문에 그림판을 이용해서 .. 더보기
2025 HACKSIUM 부산 참가 후기 오늘부로 참가했던 HACKSIUM 부산 대회가 끝났습니다. 사실상 처음으로 제대로 참가해본 대회라서 많이 설레기도 했고, 떨리기도 했습니다.예선전예선은, 온라인으로 진행되었었습니다. 아마 제 기억으로는 10시부터 18시까지 진행되었었고, 문제는 포너블, 리버싱, 암호학, 웹 분야로 나뉘어서 출제되었던 걸로 기억합니다. 제 주 분야가 포너블이었던 만큼, 포너블에 집중해서 풀어보고 싶었으나, 하필 제일 약한 분야인 FSOP로 문제가 출제되는 바람에.. 많이 풀지는 못했습니다. 그런데 팀원 분들이 너무 잘해주셔서, 감사하게도 본선에 진출할 수 있었습니다.본선본선은 부산 벡스코에서 오프라인으로 진행되었으며, 총 3일 동안 진행되었습니다. 생각보다 규모가 넓었고, 앞에 보였던 화면이 너무 예뻤었습니다. 첫 번.. 더보기
VSCode에서 PHP, SQL 파일 실행하기 원데이 취약점 분석하려다가, PHP 파일을 실행할 일이 생겨서, 실행하는 과정을 저도 볼 겸 남겨두겠습니다. 먼저 PHP 파일을 실행하려면 Apache 서버가 있어야 하는데, 이걸 실행하기 위해서 필요한 어플리케이션이 XMAPP입니다. XMAPP은 아래 링크에서 설치할 수 있습니다.https://www.apachefriends.org/ XAMPP Installers and Downloads for Apache FriendsWhat is XAMPP? XAMPP is the most popular PHP development environment XAMPP is a completely free, easy to install Apache distribution containing MariaDB, PHP, an.. 더보기
Unsorted bin 공격 정리 Unsorted bin이란?Unsorted bin은 다음에 정리할 small bin과 large bin 크기의 힙 chunk가 해제되면 이후 재할당을 위해 사용되는 bin입니다. tcache와 비교했을 때 비교적 큰 크기가 Unsorted bin에 할당되며, 한 번만 사용할 수 있습니다.tcache와 비교한 결과를 정리하면 다음과 같습니다.0x410 미만의 크기는 tcache에 할당됨0x410 이상의 크기는 unsorted bin에 할당됨.공격에 어떻게 활용할 수 있는가?Unsorted bin은 free되었을 때 fd와 bk에 특정 libc 영역의 주소가 저장되어 있습니다.이러한 특성을 이용해서 만약 코드에 OOB를 이용한 임의 주소 읽기 취약점이 존재한다면, Libc의 base 주소를 유출시킬 수 있습.. 더보기