(0ctf) BABYHEAP - fastbin attack, chunk overlap
https://github.com/umbum/Python/blob/master/exploit/0ctf_babyheap.py Fill에서 Size를 지정할 때, chunk의 size보다 크게 지정할 수 있기 때문에 다음 chunk의 fd를 덮어 쓸 수 있고, 이를 이용해 원하는 곳에 chunk를 만들어 반환하도록 할 수 있다. ( fastbin ...
https://github.com/umbum/Python/blob/master/exploit/0ctf_babyheap.py Fill에서 Size를 지정할 때, chunk의 size보다 크게 지정할 수 있기 때문에 다음 chunk의 fd를 덮어 쓸 수 있고, 이를 이용해 원하는 곳에 chunk를 만들어 반환하도록 할 수 있다. ( fastbin ...
clue read()에서 변수 크기보다 큰 10byte를 받는다. -가 들어가 음수가 될 수 있다. 10byte를 받지만, 1byte만 비교한다. ==> 첫 번째 byte가 0xff를 초과하도록 만들 수 있다. babyheap: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)...
상속, 인터페이스, 트레이트의 차이 상속과 나머지 두 관계의 가장 큰 차이점은, 인터페이스와 트레이트는 기능 단위 라는 것이다. 그래서 클래스 사이에 연관 관계가 없어도 기능 단위의 공통점을 가지도록 할 수 있다. abstract 추상 클래스를 사용하려면 extends를 사용해야 하므로, 상속 계층에 연결된다. 추상 클래스는 반드시 하나 이상의 추상...
인증 / 인가 인증 / 인가 정보 유지는 세션과 SID를 기반으로 한다. 인증 ( Authentication ) 사용자의 신원을 증명하는 것. e.g., 로그인한 사용자는 인증된 사용자. 인가 ( Authorization ) 특정 리소스에 접근할 수 있는 권한을 부여 하는 것. 접근 제어(access control)라고도 볼 수 있다. Ide...
Brute Force 최대 로그인 실패 횟수를 기록해 계정을 임시로 정지시키는 방법이 유용하다. 로그인에 실패한 사용자가 몇 초 이내에 다시 로그인을 시도하면 무조건 실패로 처리하거나, 성공이든 실패든 몇 초 이후에 다시 시도하라는 메세지를 주는 방법(throttling)도 고려해볼 수 있으나 요즘 잘 쓰이지는 않는 것 같다. 보통 패스워드가 틀렸을 ...
100 - solve File Signature가 PK라서, .zip으로 바꾸고 압축을 풀었더니 biscuit이 나왔다. biscuit의 File Signature가 Rar!이므로 .rar로 바꾸고 압축을 풀었더니 biscuit1과 biscuit2가 나왔다. biscuit1은 실행파일 biscuit2의 File Signature는 다시 PK. 그래서 ...
100 - DNSTunnel DNS query날릴 때 url 앞에 data를 붙여 전송하는 방식으로 조금 씩 데이터를 전송하는 듯. 20byte인걸로 봐서 sha1 인 것 같다. decode해봐야… 안된다. 마지막만 길이가 다른 것도 이상하고… 뭘까? 아 생각해보니 hash는 아닌 것 같은게 수신 측에서 데이터를 받아 해독해야하는데 hash를 쓸리가...
Session 세션 데이터는 세션 데이터 저장소에 보관된다. SID라는 고유 식별자로 세션 데이터 저장소에서 특정 레코드를 식별한다. 세션 저장소 경로는 php.ini의 session.save\_path에 지정되며 session\_save_path()로 얻거나 설정할 수 있다. 이를 이용해 세션 저장소에 직접 접근해서 다른 세션 데이터를 얻어올 수 ...
입력 필터링 입력 필터링 작업은 세 단계로 구분하는 것이 좋다. 입력을 구분하는 단계 입력을 필터링하는 단계 필터링된 데이터와 오염된 데이터를 구별하는 단계 입력을 구분하는 단계 세션 데이터 저장소는 서버에 저장되기는 하지만 이를 입력으로 간주하는 것이 안전하며 DB의 데이터도 마찬가지다. 일반적으로 사용하는 외부 입력 출처를 정리하...
Telnet wiki RFC 854 0xff telnet에서는 0xff를 command 중 하나인 IAC(Interpret As Command)로 예약되어 있다. 각 command의 끝에 IAC를 붙이는 방식으로 일반 data와 command를 구분하게 되는데, 사용자가 0xff를 입력하는 경우와 구분하기 위해 telnet 프로세스는 사용자...