sys2 shell에서 pacman -Syu 을 입력했더니Error: failed to synchronize all databases (unable to lock database)라는 오류가 발생하였고, 아래의 링크에서 해결방법을 찾을 수 있었다.https:/
Lazy binding을 하는 바이너리는 실행 중에 GOT 테이블을 업데이트할 수 있어야 하므로 GOT에 쓰기 권한이 부여된다 👉 취약점 발생! 👉 RELRO 등장프로세스의 데이터 세그먼트를 보호하는 기법쓰기 권한이 불필요한 데이터 세그먼트에 쓰기 권한을 제거한다.
system 함수위험하기 때문에 실제 바이너리에서 이 함수가 PLT에 포함될 가능성은 거의 없다.\-> 프로세스에서 libc가 매핑된 주소를 찾고, 그 주소로부터 system함수의 offset을 이용하여 함수의 주소를 계산해야 한다.다수의 리턴 가젯을 연결해서 사용하는
앞의 게시물에서 카나리 우회를 통해 쉘을 획득하는 문제(wargame - ssp_001)를 다뤘다.이 문제는 코드에 get_shell이라는 함수가 정의되어있기 때문에해당 함수의 주소를 덮어씌움으로써 쉘을 획득했는데이러한 함수가 없는 경우엔? 직접 쉘코드를 가져오는 코드
자주 사용하는 함수들의 정의를 묶은 것같은 함수를 반복적으로 정의해야하는 수고를 덜 수 있어 효율적이다.표준 라이브러리범용적을 많이 사용되는 함수들은 표준 라이브러리가 제작되어 있다.호출된 함수와 실제 라이브러리의 함수가 링크 과정에서 연결된다.함수를 호출하면 매핑된
지난 시간에 배운 r2s!는1\. 반환 주소를 임의 주소로 덮을 수 있다2\. 버퍼의 주소를 알 수 있다.3\. 그 버퍼가 실행 가능하다.위 세가지 이유 때문에 실행이 가능하다! \-> Attack surface를 줄이기 위해 보호기법이 추가로 도입되어야 한다.공격자가
앞선 강의에선 스택 버퍼 오버플로우의 취약점을 찾아 익스플로잇 하는 방법으로 return address를 공격하는 기법을 배웠죠?이를 보호하는 Stack Canary에 대해 배워봅시다!스택 버퍼 오버플로우로부터 반환 주소를 보호하는 보호기법원리함수의 프롤로그에서 스택
아래 코드에서 취약점을 찾아보세요!scanf("%s", buf);scanf의 %s는 입력의 길이를 제한하지 않는다.\-> scanf에 %s 포맷 스트링은 절대로 사용하지 말아야 한다!정확히 n개의 문자만 입력받는 %\[n]s의 형태로 사용해야 한다.버퍼를 다루면서 길
Stack Buffer Overflow 는 유명하고 오래된 취약점이다.💡 Stack Overflow VS Stack Buffer OverflowStack Overflow : 스택 영역이 너무 많이 확장돼서 발생하는 버그Stack Buffer Overflow :
함수의 호출 및 반환에 대한 약속함수를 호출할 때는 반환된 이후를 위해 스택 프레임과 반환주소를 저장해야 한다.또한, 호출자(caller)는 피호출자(callee)가 요구하는 인자를 전달해줘야 하며, 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 한다.컴파일러는
문제를 다운받아 컴파일 후 실행시켜보면 shellcode를 입력받음문제 설명에서 제공하는 코드 활용어셈블리 코드 파일을 작성하고objcopy를 이용하여 shellcode를 추출한다cat write.bin | ./shell_basic 코드를 이용하면 shellcode에
익스플로잇(exploit) : 해킹 분야에서 상대 시스템을 공격하는 것셸코드(Shellcode)란?익스플로잇을 위해 제작된 어셈블리 코드 조각만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드가 실행되게 할 수 있다.셸코드는 어셈블
process 익스플로잇을 로컬 바이너리를 대상으로 할 때 보통 테스트를 위해remote 원격 서버를 대상으로 할 때 대상 서버를 실제로 공격하기 위해데이터를 프로세스에 전송하기 위해프로세스에서 데이터를 받기 위해어떤 값을
중단점 : b \*maincontinue : crun : rb: breakc: continuer: runsi: step intoni: next instructioni: infok: killpd: pdisasex disassembly mainu, nearpc, pdisa
⭕ Computer Architecture ⭕ Linux Memory Layout ⭕ x86 Assembly
다른 말로 disjoint-set구조라고도 한다.union연산과 find연산 기본적으로 단 2개만을 지원하는 자료구조이며disjoint한 집합들을 표현하는 자료구조다.이게 표현하려는 집합들은 어떤 두 집합 사이에도 교집합의 원소가 하나도 없고, 모든 집합의 합집합은
나무를 뜻하는 그 트리. 나무를 뒤집어놓은 거 처럼 생겨서 그랬대트리는 그래프의 하위집합인데,①연결 그래프이다. (컴포넌트가 하나)②방향을 무시하였을 때, 싸이클이 존재하지 않는다.\-> ex 이건 ①을 충족하지 못하므로 트리가 아님. {A, B}, {C, D, E}로