Listbook제공해준 libc 파일 버전은 GLIBC 2.31-0ubuntu9.2 이다.Ubuntu 20.04에서 풀었다.보호기법xxxxxxxxxx~/Desktop/0ctf/listbook > checksec listbook [*] '/home/sindo/Desktop/0ctf/listbook/listbook' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled~/Desktop/0ctf/listbook > 메뉴로는 add, delete, show, exit 가 있는데 하나씩 살펴보자.add제일 먼저 코드를 보면 v2 변수에 0x20크기만큼 할당하는 것을 볼 수 있고, 아래에 입력되는 값들을 ..
보호기법 바이너리 분석 취약점 Exploit code Flag 보호기법 64bit에 보호기법은 Partial RELRO, NX가 적용되어 있다. 바이너리 분석 기능은 별거 없다. walk sleep ⇒ exit(0) inventory (조건) take banana 세가지 기능이 있는데, walk를 누르면 동서남북으로 이동하게 해주고 rand() & 1이 0이 아니면 4번 조건을 켜준다. 바나나를 주울 때는 길이와 바나나의 이름을 받고, inventory에 저장한다. 그리고 이 바나나는 inventory기능에서 eat하거나 rename을 통해 처리할 수 있게 된다. 취약점 취약점은 Double Free가 발생한다. 위의 코드는 inventory에 들어있는 바나나를 eat할 때 실행되는 루틴이다. 여기서 f..
보호되어 있는 글입니다.
보호기법 바이너리 분석 Vulnerability Exploit Code Flag 보호기법 64bit에 Canary, NX, PIE가 걸려있다. 바이너리 분석 바이너리 main을 요약해보자면 int list의 길이를 입력받는다. int list에 값을 넣는다. parameter function(increment, positive, abs)의 주소를 알려주고 하나를 선택한다. function(map, filter)의 주소를 알려주고 하나를 선택한다. 전부 선택이 끝나면 function(int list, parameter function)을 수행하고 결과를 출력한다. Vulnerability 취약점은 입력값 검증 미흡이라고 볼 수 있겠다. 위의 42-44 줄에서 param 함수가 나열되어 있는데, 사용자가 다..
보호기법 64bit 환경에 보호기법은 전부 걸려있지 않다. 바이너리 분석 바이너리 자체가 매우 작은데, 정의된 함수가 _start, main, _read 단 세 개로 구성되어 있다. main main에서는 간단하게 read함수를 호출한다. 그런데 read함수가 실제 read대로 작동하는 것은 아니고, 새롭게 정의 되어 있는 함수이다. read함수는 실제로 _read라는 함수로 호출이 되는 것을 볼 수 있다. _read _read함수에서는 sys_read를 통해 입력을 진행하는데, buf 인자로 main함수 지역변수인 fd의 주소가 들어온다. Vulnerability 취약점은 BOF가 존재한다. main 함수 지역변수에 0x200만큼 데이터를 덮어쓸 수 있기 때문에 main stack에서 Overflow가..