glibc-2.23 & glibc-2.27 # 함수 살펴보기 calloc() 함수는 각각 크기 바이트의 nmemb 요소 배열에 대해 메모리를 할당하고 할당된 메모리에 포인터를 반환한다. 메모리가 0으로 설정되어 있다. nmemb 또는 크기가 0이면 calloc()가 NULL을 반환하거나 나중에 free()로 성공적으로 전달할 수 있는 고유한 포인터 값을 반환한다. allocate 함수 malloc, calloc, realloc 중 calloc은 동적할당 시 메모리를 초기화하고 할당하는 함수이다 # 흐름 취약점을 직접 눈으로 확인해보기 위해 아래와 같은 코드를 작성하고 calloc의 내부 루틴을 보기 위해 main+78 에 break point를 걸었다 이후 진행되는 내부루틴을 보기전에 malloc_hoo..
[ Command ] start : 실행 후 자동 중단합니다 r : 실행합니다 ctrl+c : 실행을 중단합니다 c : continue. 계속하기 vmmap : 메모리 상황보기 elfheader : 메모리 헤더들 주솟값 확인 disassemble [함수명] : 함수 디스어셈블 목록 확인하기 예) disassemble main u 또는 nerarpc 또는 pdisassemble : disassemble 을 이쁘게 출력합니다 b *[주솟값] : break point 걸기 예) b *main+124 b *0x6020a0 del [번호] : break point 삭제하기 예) del 1 ni , si : 한줄씩 코드 진행(call 함수 내부 건너뜀) , call 함수내부까지 한줄씩 진행 finish : 진행 중..
# 들어가기전에 2020-01-13 에 배운 내용입니다 포맷스트링 버그(FSB)와 exit 함수의 호출 루틴을 이용하여 exploit 하는 방법을 알아보도록 하자 제목의 Extra Segment 는 확장영역을 의미하며 프로그래머에 의해 사용처가 정해진다 또 그외에 fs와 gs 도 존재하는데 다른 영역들과 달리 사용처가 특별히 정해지지 않는 영역이다 IDA를 통한 분석을 하다보면 fs와 gs를 자주 보게되는데 이들은 Canary 값들과 연관이 있다 * CS 는 Code segment, DS 는 Data Segment 등 의미가 있는데 f와 g는 무엇을 의미할까? -> Extra Segment 에서 알파벳 순서로 e 다음은 f 와 g 라서 이름이 그런것이다 # 알아보기 위에서 보았듯이 Canary 값들(64..
1. 왜 system 함수를 쓰지 않을까? shell을 따기위해서 system('/bin/sh') 를 호출해보았고 execve('/bin/sh',0,0) 도 호출해본 경험이 있다 그런데 왜 shellcode를 만들때는 execve( ) 를 사용하는 것일까? 일단 system 함수와 execve 함수가 실행되는 모습을 비교해보자 위 두 모습을 비교해보면 system 함수는 호출된 뒤에 printf 도 호출했지만 execve가 호출되고 난 뒤에는 printf 가 호출되지 않았다 system 함수의 경우 작업이 끝날때까지 호출한 프로세스가 대기하다가 계속 수행되지만 execve 는 호출 프로세스가 바뀌어버린다는 차이가 있다 system 함수는 fork() 와 execve() 의 결합물이다 fork( ) 를 통..
2020-06-21 추가 설명 for 20 더보기 C언어만 배운 상태에서 .py 확장자인 python 언어를 사용하는 것이 익숙하지 않을 수 있다. 하지만 python과 c언어의 문법이 비슷하게 사용된다. 하지만 일부 표현이 다른 부분이 존재한다. 그래서 C언어와 다른 점을 간단하게 설명해주고자 한다. 1. C언어와 달리 자료형 선언이 필요가 없다. c - ex) int a = 3; char c = 'a'; int arr[5] = {1,2,3,4,5}; py- ex) a = 3, c = 'a' arr = [1,2,3,4,5] 즉, 자료형을 알아서 설정한다. 따라서 c언의 배열자료형도 python의 리스트 자료형으로 대체가능하다. 2. 조건문과 반복문에서 ( ) 와 같은 기호가 필요없다. c - ex) i..