본문 바로가기

시스템

(42)
DLL이란? DLL(Dynamic Link Library) 이란 일반적으로 확장자가 DLL인 파일을 말한다. 라이브러리라는 말에서 알 수 있듯이 다른 프로그램에서 이용하는 함수들을 모아둔 것이다. 하지만 표준 C 라이브러리 같은 일반 라이브러리의 파일과는 구조나 사용법이 다소 다르다. 일반 라이브러리는 소스코드를 컴파일한 결과로 생성되는 객체 파일(.obj)을 그대로 모아둔 것이다. 링커는 이 중에서 필요한 함수가 포함된 객체 파일을 꺼내서 실행 파일에 결합하는 '정적 링크' 방식이다. 정적 링크는 C/C++ 프로그램의 소스 코드를 기계어 코드로 변환하는 컴파일 단계를 거치게 된다. 여기서 C/C++에는 수많은 표준함수들이 존재하고 있는데 이들은 표준 라이브러리 파일 안에 어셈블리 코드의 형태로 담겨 있다. 소스 코..
hackerschool FTZ level 1 - level 20 풀이 통합본 한번에 보기 쉽도록 정리해놨습니다. 도움이 됐으면 좋겠습니다.
hackerschool FTZ : level 20 풀이 문제 분석 1. fgets bof 2. FSB 사용 FSB 자세한 설명 https://pu1et-panggg.tistory.com/22 풀이 목표 : printf@got
hackerschool FTZ : level 18 풀이 문제 분석 1. count string -4 string -4 = check = 0xdeadbeef 2. payload = 0x08*4 + check = 0x08*4 + 0xdeadbeef
hackerschool FTZ : level 17 풀이 문제 분석 1. fgets bof 2. *call = shell_addr 풀이 1. buf 주소 확인 : ebp-56 call 주소 확인 : ebp-16 0xffffffc8(%ebp) = ebp-56 0xfffffff0(%ebp) = ebp-16 2. shellcode 환경변수로 저장 후 주소 확인 : 0xbffffbe2 자세한 설명 : https://pu1et-panggg.tistory.com/51 3. payload = dummy(40bytes) + shellcode_addr = "a"*40 + 0xbffffbe2
hackerschool FTZ : level 16 풀이 문제 분석 1. fgets bof 2. *call = shell 풀이 1. shell 함수 주소 확인 : 0x80484d0 readelf -s attackme | grep shell attackme 파일의 심볼 테이블 중 shell이 들어간 문자열 출력 2. buf 주소 확인 : ebp-56 call 주소 확인 : ebp-16 0xffffffc8(%ebp) = ebp-56 0xfffffff0(%ebp) = ebp-16 3. payload = dummy(40bytes) + shell_addr = "a"*40 + 0x80484d0
hackerschool FTZ : level 15 풀이 문제 분석 1. fgets bof 2. 조건 : *check==0xdeadbeef 풀이 1. bof 위치 확인 : ebp-56 0xffffffc8(%ebp) = ebp-56 2. check 위치 확인 : ebp-16 0xfffffff0(%ebp) = ebp-16 3. 0xdeadbeef 주소 확인 0xdeadbeef가 하드코딩 되어있음 -> 0xdeadbeef 주소 확인 4. payload = dummy(40bytes) + deadbeef_addr = "a"*40 + 0xdeadbeef
hackerschool FTZ : level 14 풀이 문제 분석 1. fgets bof 2. 조건 : check==0xdeadbeef 풀이 1. bof 위치 확인 : ebp-56 lea 0xffffffc8(%ebp), %eax => lea eax ebp-56 2. check 위치 확인 : ebp-16 cmpl $0xdeadbeef, 0xfffffff0(%ebp) => cmp ebp-16 0xdeadbeef 3. payload = dummy(40bytes) + check = "a"*40 + 0xdeadbeef