보호되어 있는 글입니다.
보호되어 있는 글입니다.
기본적인 방어기법이 모두 enable된 것을 확인할 수 있고, 64bit 바이너리이다. 해당 바이너리도 취약점은 어렵지 않게 찾을 수 있다. marimo 구조체의 heap 영역 주소를 저장하는 buffer의 길이는 BuyMarimo 함수에서 27번째 줄에 따라 15인 것을 확인할 수 있다. 하지만 여기서 단순히 15만 확인하고 있다는 것도 중요한 취약 포인트이다. show_marimo 함수에서 10번째 줄에 새로 할당한 marimo를 List에 넣고 Offset을 1 증가시키는데 Buy랑 달리 Offset을 체크하는 루틴이 전혀 존재하지 않는다. 따라서 Out-of-bound 취약점이 발생하고, 데이터 영역에서 이 취약점을 통해 Memory corruption이 가능하다. 공격 방법Out-of-bound..
checksec을 통해 확인해보면 Stack Canary가 풀려있는 것을 확인할 수 있고, 64bit 바이너리이다. 그 외의 값은 default 값이므로 중요하지 않다. 취약점은 매우 간단하다. 처음 입력 받는 함수에서 바로 stack buffer overflow 취약점이 존재한다. 따라서 여기서 Return Address를 덮는 것으로, 64bit ROP만 하면 끝난다. exploit 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#!/usr/bin/pythonfrom pwn import * def main(): elf = ELF("./B..
Reversing 분야의 문제이다. 사용자로부터 flag 값을 입력받는다. 바이너리에는 총 15개의 flag 검증 루틴이 존재하고, 사용자로부터 입력받아 검증된 flag가 SHA256으로 연산했을 때 특정 값과 동일해야 한다. 중간에 Anti-Reversing이 걸려있긴 한데, 바이너리 패치로 간단하게 우회할 수 있으므로 무시해도 되며, 중요한 부분은 func 함수와 SHA256 연산 후, strcmp 함수이다. func 함수의 루틴은 z3나 순수 리버싱으로 풀어도 되지만, 귀찮아서 angr를 사용하였다. angr 소스코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#!/usr/bin/pyt..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
smashme와 동일하게 바이너리 자체에는 어떤 보호기법도 걸려있지 않고, 서버에는 ASLR이 걸려있다. 1번 메뉴와 4번 메뉴에서 malloc으로 할당하는 size는 0x38인데 반해, 입력은 read() 함수를 통해 0x80만큼 입력을 받기 때문에 Heap Overflow가 발생한다. Heap에 할당된 영역을 2개 이상 해제하게 되면 binlist에 들어가게 되어, fd와 bk에 heap 영역의 주소가 들어가는데 이 주소를 leak하여 공격에 사용할 수 있다. RIP 변조는 조금 더 과정이 필요하다. 해제된 chunk의 fd를 할당된 heap address가 저장되는 전역 변수인 reqlist로 변조하면 다음에 추가로 heap을 할당할 때 reqlist의 위치에 heap이 할당이 되어 reqlist ..
바이너리에 그 어떠한 보호기법도 걸려있지 않고, 서버에는 ASLR은 걸려있는걸로 예상하고 시작하였다. 문제의 main 함수에는 gets() 함수를 통해 buffer에 입력을 받기 때문에 Buffer Overflow 취약점이 존재한다. 하지만, 이름 smashme인 것처럼 sub_400320() 함수 때문에 그냥 되진 않는데, 저걸 무사히 통과해서 Return Address에 접근해 종료되도록 만들면 된다. 조금 디버깅해보면 __strstr_sse2_unaligned() 함수의 시작부분에서 rsi 레지스터에서 1바이트씩 가져와 확인을 하는 모습을 볼 수 있다. rsi에 있는 문자열을 살펴보면 조금 수상한 문자열이 들어있는데, 이 문자열이 키워드이다. 해당 문자열 뒤에 문자열을 추가하여 입력을 하면 Segm..
보호되어 있는 글입니다.