Try to be the expert.

Ainsetin's Hacking & PS & Math

Hacking 31

2021 Layer7 CTF 우승 썰 + 후기

Summary 작년 11월에 2020 Layer7 CTF 후기를 적었었는데, 올해 후기도 써달라는 댓글이 있어서 한번 써보려고 한다. 정말 놀랍게도 작년 9월에 PS에서 해킹으로 전향하고 나서 완성이 되지 않았던 내 실력으로 참가했던 대회에서 올해 우승을 해서 너무 기쁘다. "CTF는 할만하다" 라는 문구로 시작했던 이 대회에서 작년 YISF 우승 이후 다시는 못할 것 같았던 CTF 우승, 그것도 일반부까지 포함된 대회에서 종합우승을 이뤄냈다는 것이 너무나도 뿌듯하기도 했다. 이제는 CTF 뿐만 아니라 좋은 대학의 좋은 동아리, 해킹 팀에 이바지하고 싶고, 좋은 선배들, 지인들도 만나 내 역량을 공유하고, 보탬이 되고자 한다. Layer7 CTF 우승까지의 험난한 여정 잘 볼거라는 확신이 없었던 수능을 ..

Hacking/CTF 후기 2021.11.23

Linux Kernel 코드 분석 첫걸음

Dreamhack kpwnote를 풀고 나서 더이상 커널 모듈이나 코드에 대한 분석 및 Exploit을 진행해본 적이 없어 한번 제대로 분석 노트를 만들어 분석 과정을 정리해 봐야겠다는 생각에 이 글을 쓰게 되었다. 또한 현재 진행하고 있는 Kernel CVE Analysis에도 도움이 될 것이다. kernel source의 위치는 다음과 같이 /usr/src 안에 있음을 확인할 수 있으며, 폴더 이름만으로 어떤 커널 버전을 사용하고 있는지 알 수 있다. 또한, 여기 존재하는 버전을 통해 컴파일을 하여 Ubuntu가 구동되고 있는 상태라고 생각하면 된다. Ubuntu LTS Version 같은 경우 다음과 같이 버전별 사용하는 kernel 버전에 차이가 있다. 위의 버전을 보면 알겠지만, 나는 Ubunt..

Hacking/Analysis 2021.11.09

ptmalloc2 bin 분석

1. fastbin M_MXFAST 매개변수를 사용하여 청크의 범위를 설정한다. (1이면 사용, 0이면 fastbin을 사용하지 않음) default 범위는 0~80*(size_t)/4까지 일반적으로 사용하는 범위는 0 ~ 64*(size_t)/4 32bit에서는 size_t가 4, 64bit에서는 8 따라서 fastbin의 상한은 32bit에서는 64byte(0x40), 64bit에서는 128byte(0x80) LIFO (Last In First Out) 방식을 채택, 즉 마지막으로 해제된 chunk를 먼저 재사용한다. fastbin에서 서로 chunk가 인접해 있어도 병합하지 않는다. 2. smallbin MIN_LARGE_SIZE보다 작은 값을 사용 : 32bit에서는 512(0x200), 64bi..

Hacking/Pwnable 2020.12.01

2020 Layer7 CTF 후기

요약 MISC 3, Forensic 1, Pwn 1 총 5문제를 솔브하여 고등부 부문에서는 7등, 전체로는 18등을 찍었다. 참여 배경 & 시행착오 어제는 드림핵 CTF Round #3하고 Layer7 CTF 둘을 병행하며 참여하였다. 그런데 드림핵 CTF는 너무 어려웠기도 했고 Layer7 CTF가 더 문제가 많고 분야도 다양하고, 중등부or고등부or일반부로 나뉘어져있어서 고등부 부문 3등상이라도 노려보려고 하였다. 우선 쉬운 MISC 2문제와 Forensic 1문제를 풀고 포너블 문제를 잡았다. Mask store 문제를 한 2시간 반정도 풀이한 것 같은데, 처음에 생각한 취약점이 안먹혀서 이 방법이 아닌가보다,, 하고 끙끙대고 있었다. 1시간 뒤에 다시 해보니까 갑자기 잘 되서 익스 도전을 해보니 ..

Hacking/CTF 후기 2020.11.15

HackCTF RTC Write-up

오랜만에 라옵을 작성해본다. 요즘 동아리 관련 일을 하니 며칠동안 안잡은 해킹도 자연스럽게 하게 된다. 그런 의미로 열심히 작성해보겠다. 이번 문제는 RTC(Return to csu) 문제이다. 한번 파헤쳐보자. 우선 zip 파일 안에 어떤 것이 있는지 보겠다. 문제 바이너리와 바이너리에 맞는 libc 파일 하나가 들어 있었다. 우선 바이너리 안에 있는 보호 기법을 확인하자. 64bit 기반 아키텍쳐이고, NX bit 이외에 특별한 보호 기법이 보이지 않는다. 이제 IDA로 까보자. 보니까 간단한 write & read 프로그램이다. buf의 크기가 0x40byte이고, read로 0x200을 받으므로 BOF 취약점이 생긴다. 그런데, NX bit가 걸려 있으므로 쉘코드를 놓고 실행하지는 못하기 때문에,..

Hacking/HackCTF 2020.05.01

linux gcc 사용법을 알아보자!

1) gcc 파일명(*.c) : Default로 out 파일이 생성된다. (ex a.out) 2) gcc -c 파일명(*.c) : 오브젝트 파일을 생성한다. 3) gcc -c 오브젝트_파일명(*.o) 파일명(*.c) + gcc -o 실행파일명(*.out) 오브젝트_파일명(*.o) 4) gcc –o 실행파일명(*.out) 파일명(*.c) : 실행 파일을 만든다. (3번을 한줄 로...) -------------------------------------------------------------------------- 1. -Wall 옵션 : 모든 모호한 코딩에 대해서 경고를 보내는 옵션 2. -W 옵션 : 합법적이지만 모호한 코딩에 대해서 경고를 보내는 옵션 3. -W -Wall 옵션 : 아주 사소한 모..

Hacking 2020.04.28

2020 TRUST & STEALTH CTF 출제 및 운영 후기

이 대회는 원래 3월 초에 개학 후 신입생들의 동아리 지원과 해킹에 대한 관심도 향상에 도움을 주기 위해 이 대회를 매년 해 왔었고, 작년에는 내가 직접 문제를 풀어 보았기 때문에 더욱 의미가 있는 CTF이다. 신입생들을 위해 만든 CTF이기 때문에 올해는 직접 출제 및 운영을 도맡았다. 처음 해보는 CTF 운영이라 기대도 있었지만, 초기에 홍보를 위해 많이 노력해야 되더라. 열심히 하고는 싶은데 신입생 친구들이 많이 참여해 주어야 우리도 힘이 나는걸 몸소 느꼈다. 올해는 작년 대비 절반 정도에 못 미쳤지만, 그래도 열심히 풀어주는 친구들이 고맙더라. 올해 STEALTH의 일반동아리장을 맡으면서 책임감이라는 것을 많이 느낀다. 진짜 동아리에 들어온 직후에는 내가 이렇게 될 줄 몰랐는데, 내신을 떠나 동아..

Hacking/CTF 후기 2020.03.27

HackCTF Unexploitable #1 Write-up

이번엔 기본 RTL 문제를 풀어보겠다. 우선 보호 기법부터 확인하자. 보니까 평범하게 컴파일된 바이너리이다. NX bit만 설정되어 있는 것을 볼 수 있다. IDA로 코드를 보자. 우선 64byte 입력에 s의 크기가 16byte이므로 BOF가 가능하다. 보니까 easy RTL 이라고 되어 있다. 왜 그런지 확인해보자. 여기서 system을 호출하므로 call 할 때의 주소를 RET에 집어넣으면 되겠다. 문제는 "/bin/sh"문자열을 구해야 한다는 것인데, 어디선가 "sh"라고만 쳐도 쉘이 실행되는 것을 본 적이 있었다. 일단 Shift+F12로 문자열 검색을 해보았다. 보니까 fflush 문자열이 있는 것을 확인할 수 있었다. 따라서 그냥 's'의 주소를 찾아 "sh" 문자열을 읽어낼 수 있다. 알파..

Hacking/HackCTF 2020.02.20

HackCTF You are silver Write-up

오랜만에 hackctf 라업을 작성하는 것 같다. Format String Bug를 제대로 공부하고 와서 그런지 이번 문제도 어렵지 않게 풀 수 있을 것 같다. 그럼 문제를 풀어보자!! checksec부터 시작!! 평범하게 컴파일 된 바이너리이다. GOT overwriting을 할 수 있다. 그럼 IDA로 한번 보자. 보니까 s에 46byte 크기를 입력할 수 있고, 그것을 printf로 그냥 출력한다. 따라서 FSB 문제라는 것을 알 수 있다. 문제의 구성은 get_tier함수를 실행하고 난 리턴 값을 출력해 주는 것으로 간단하다. 보니까 main에서 가져온 v6값을 전제로 티어를 정해주는 것을 알 수 있었다. 그런데 main에서 호출되지 않은 함수가 존재하였다!! 이것은 인자가 4라면 flag를 출력..

Hacking/HackCTF 2020.02.17