ROP
-
[ROP] Abstract (KOR)Paper/KOR 2018. 7. 1. 20:28
Andreas Follner - Dissertation - Final ON GENERATING GADGET CHAINS FOR RETURN-ORIENTED PROGRAMMING Abstract(초록) 임베디드 기기들의 증가와 함께, low-level 프로그래밍 언어인 C, C++은 현재 새롭게 주목받고 있습니다. 그러나 이러한 언어들은 안전하지 못하므로 프로그래밍 오류가 발생하여 시스템의 무결성을 손상시킬 수 있습니다. 이러한 언어들로 작성된 많은 프로그램에는 이러한 프로그래밍 오류를 갖고있으며, 이러한 오류들 가운데 가장 악명 높은것은 버퍼 오버플로우(buffer overflow)입니다. 이를 해결하기 위해 대부분의 주요 운영 시스템의 보안 개념을 통합하는 착취를 방해하도록 설계된 광범위한 완화 기술이..
-
Plaid CTF 2013 ropasaurusrex write-upCTF Write-Up 2018. 3. 6. 06:57
Plaid CTF 2013 ropasaurusrex 라는 문제를 풀어봤다. 먼저 정적분석을 위해 IDA로 열어본다. 먼저 main()를 살펴보면 어떤 함수를 호출하고 write()를 호출하여 win\n 이라는 문자열을 출력해주는 것을 볼 수 있다. 그 어떤 함수에 들어가 보면 바로 취약점을 찾을 수 있는데,이는 char buf 가 bp-88 즉, 136 byte의 공간을 할당 받았지만, 바로 밑 read()에서 256 byte를 입력받게 되어있기 때문에buffer overflow 취약점에 해당된다. 여기까지 정적분석을 마쳤으니 동적분석을 해보자. 먼저 실행을 해보면 예상처럼 입력을 받고, win이라는 문자열을 출력해준다. 그리고 memory 보호기법을 확인 해보면 NX bit 만 걸려있었다. 이는 쉘코드..
-
ELF Technique - ROPSystem hacking training/Knowledge 2018. 3. 5. 03:46
ROP 를 배우기 전에 선행되어야할 개념들이 존재한다. RTLRTL ChainingGOT Overwrite 위 내용을 선행한 후 ROP 를 이해할 수 있다. ROP 란? Return Oriented Programming의 약자로, 우리말로 하면 반환 지향형 프로그래밍이다. 현재 수행중인 프로그램 코드 안에 존재하는 서브루틴이 리턴 명령어에 닿기 전에 기계 명령어 또는 기계 명령어 덩어리를 간접적으로 실행시키기 위해 콜 스택을 제어하는 기술이다. 실행되는 모든 명령어들이 원래 프로그램 안에 존재하는 실행 가능한 메모리 영역에서 추출한 것들이기 때문에, 이러한 기술은 사용자 제어 메모리 공간에서 명령어 수행을 방지하는 DEP/NX bit, ASLR들을 우회하는 코드 인젝션과 같은 기술들을 사용하지 않아도 우..