rosieblue
article thumbnail
[HackTheBox] SickROP

SROP 기법을 오랜만에 복습하고 싶어서 이렇게 블로그에 SROP 풀이 방법을 정리하고자 한다. 이 문제는 SROP에 대해서 제대로 익힐 수 있고, 그뿐만 아니라 다른 테크니컬적인 부분도 굉장히 배울 점이 많아 추천하는 문제이다. SROP에 대한 자세한 설명은 예전에 작성해놓았으니 필요하면 아래를 참고하면 된다. [Pwnable] SROP (SigRetrun Oriented Programming) [Pwnable] Exploit Tech: SigReturn-Oriented Programming 아래 포스트는 내가 적은 건 아닌데 SROP 공부하는데 도움된 포스트이다. SROP. Sigreturn-oriented programming (SROP)… | by trustie_rity | Medium 문제 분석..

[Pwnable] ROP 가젯 찾기 어려울 때 할 수 있는 방법들...
Linux Exploitation/settings 2024. 1. 3. 14:27

plt 등을 알아도 인자를 넘겨주기 어려울 때 사용하면 좋을 것 같다. objdump로 찾기 예를 들어 libc 모르는 경우, PIE base 안다면(혹은 PIE가 적용되어있지 않다면) 코드 세그먼트 내에서 가젯 찾아보는 시도 가능 objdump 등으로 찾을 수 있다. 이를 사용한 문제는 아래!! (사실 내가 만든 문제다 ㅎㅎ 그런데 라업 보니까 이렇게 푸신 분들은 별로 없는듯...하다.. 그래도 이렇게 하면 무척 편리하게 풀수 있다!) https://dreamhack.io/wargame/challenges/1071 Santa House Description 산타 할아버지가 크리스마스를 맞아 드림이들을 모두 집에 초대해서 선물을 나눠주신대요! 착한 아이는 어쩌면 비밀스러운 선물을 받을 수 있을지도 몰라요..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
article thumbnail
[Kernel] Mitigation : KASLR
Linux Exploitation/Kernel 2023. 10. 14. 18:17

KASLR KASLR가 적용되면 커널 코드 및 데이터 부분이 임의의 주소에 배치되게 됨. KASLR는 커널 3.14버전에서 처음으로 지원하였고, 4.12버전에서부터는 디폴트로 KASLR를 적용하게 됨 KASLR 안 적용하려면 커널 명령줄에 nokaslr를 적용하면 됨 실습파일에서는 nokaslr가 그냥 적용되어있기 때문에 아래처럼 바꿔줘야한다. (수정 전) _kernel_cmdline="console=ttyS0 mitigations=off nokaslr norandmaps" (수정 후) _kernel_cmdline="console=ttyS0 mitigations=off norandmaps" 위 처럼 run.sh를 수정해서 _kernel_cmdline에서 nokaslr를 없애면 항상 kaslr가 적용된다...

article thumbnail
[Linux] /proc 디렉토리

/proc 리눅스에는 커널과 커널 모듈로부터 프로세스에게 정보를 전송해주기 위한 추가적인 메카니즘인 /proc 파일시스템이 있다. 원래는 프로세스 정보에 쉽게 접근할 수 있기 위해 만들어졌기 때문에 proc(process)라는 이름을 가지고 있다고 한다 프로세스 정보 대충 아무 프로세스나 실행하고 이 친구의 proc 디렉토리를 가보겠다 이렇게 여러 정보들을 담은 디렉토리가 생성이 됐다 /proc/[pid]/maps 아래처럼 메모리 매핑이 어떻게 되어있는지 보여준다 /proc/[pid]/cmdline 프로세스 인수를 담는 애다! 우리는 딱히 옵션을 주지않았기 때문에 아래처럼 출력됐다 /proc/[pid]/cwd 해당 프로세스가 실행되고 있는 디렉토리를 링크로 걸어둔 거다 아래처럼 똑같이 생겼다 /proc/..

article thumbnail
[Kernel] Tasks (1)
Linux Exploitation/Kernel 2023. 10. 4. 16:02

Tasks 리눅스에서는 프로세스나 스레드를 'Task'라는 하나의 단위로 관리한다. Task는 결국 하나의 '실행 단위'를 이야기한다. 결국 프로세스나 스레드는 개념적인 구분일 뿐이고, 리눅스 내에서 이들이 관리될 때에는 프로세스나 스레드나 모두 '태스크'로 관리가 된다. 테스크 별로 시간을 할당하여 여러 개의 테스크들을 실행하는 멀티 태스킹, 실행 시간을 배분하는 스케줄링 등 모두 많이 들어본 용어들일 것이다. 각 태스크는 task_struct라는 구조체로 표현이 된다. 커널은 태스크 관리자라고 했었는데 그렇기 때문에 task_struct는 커널 메모리 내에 존재한다. 생각해보면 당연한 것이, 이렇게 중요한 정보는 일반 사용자가 접근하면 안되므로 커널 메모리 안에 들어가서 쉽게 접근할 수 없게 만드는 ..