분류 전체보기(40)
-
DSFSB
"Double Stage Format String Bug"는 프로그래밍에서 발생하는 보안 취약점 중 하나이다. 포맷 문자열 버그는 사용자 입력을 제대로 검증하지 않고 포맷 문자열 함수에 직접 전달할 때 발생하는 취약점이다. 이 취약점을 통해 공격자는 스택에 있는 데이터를 읽거나 쓸 수 있다. 따라서 메모리 내용의 유출이나 임의의 코드 실행과 같은 공격이 가능하다. "Double Stage Format String Bug"는 포맷 문자열 버그의 한 변형이다. 공격자가 한 번의 공격만으로는 메모리 주소를 파악하거나 조작하기 어려운 경우, 두 단계의 공격을 통해 원하는 정보나 조작을 달성한다. 첫 번째 단계는 메모리에서 필요한 정보를 추출하는 데 사용되며, 두 번째 단계는 그 정보를 바탕으로 실제 공격을 수행..
2023.11.05 -
www.reversing.kr(Replace)풀이
먼저 ollydbg로 Replace.exe파일를 가져오면 다음과 같은 어셈블리 코드를 보실 수 있습니다. 여기서 조금 코드를 올려보도록 하겠습니다! 자 그러면 Correct라는 문자열를 보실 수 있습니다. 여기서 GetDIgItemInt라는 함수를 call 해줘서 사용자로부터 입력값을 받습니다. 따라서 여기에 브레이크 포인트(F9)을 걸어 주도록 하겠습니다. 00401060주소의 어셈블리를 보면 함수의 반환 값 EAX(사용자의 INPUT값이 기록됨)이 4084D0번지 주소에 저장됩니다. 보시다시피 입력값이 EAX 레지스터에 저장된다는 것을 확인 할 수 있습니다. 여기서 눈치가 빠르신 분들을 무언가를 짐작하 실 수 있습니다. 이후 CALL로 함수가 한 번도 호출되니까 입력된 값을 연산하게 된다는 것을 대충..
2023.10.22 -
pwnable.kr simplelogin
다음의 코드를 보면 30만큼을 입력받습니다. 그리고 base64로 디코드하게 됩니다. 여기서 알아할 점은 입력을 진행할 때는 base64로 암호화한 상태로 진행해야됩니다! 입력을 받은 이후에 memset을 하게 되는데 0xc만큼 하게됩니다. 0xc=12입니다. 따라서 12만큼의 길이를 입력하여 보겠습니다. 그리고 memcpy에서 취약점이 발생합니다. lob를 클리어하신 분이라면 febp 문제를 알 것입니다. 그 문제의 풀이와 비슷하니 참고해서 풀이를 진행하는 것도 나쁘지 않은 방법인 것 같네요. 리눅스 환경에서 gdb로 돌려보았습니다. ubuntu@ubuntu:~/Desktop$ gdb -q login Reading symbols from login...(no debugging symbols found)..
2023.10.22 -
운영체제 1장 - 2 요약
대량의 데이터가 이동되어야 할 때, 직접 메모리 접근(DMA)과 같은 보다 효율적인 기술이 요구된다. DMA 기능은 시스템 버스 상에 있는 별도의 모듈에 의해 수행되거나 I/O 모듈에 포함될 수 있다. 어떤 경우든 프로세서가 한 블록의 데이터를 읽거나 쓰려 할 때, 다음과 같은 정 보를 보내 DMA 모듈에 입출력을 명령한다. • 읽기 요청인지 쓰기 요청인지 여부 • 관련 I/O 장치의주소 • 읽거나 쓸 메모리 내의 시작 위치 • 읽거나 쓸 워드의 개수 대칭형 멀티프로세서 : 컴퓨터 하드웨어 구조나, 그 구조를 활용하는 운영체제의 행동 양식을 일컫는 용어 대칭형 멀티프로세서는 독립형(standalone)컴퓨터 시스템으로서 아래의 특징을 가짐 1. 두 개 이상의 유사한 수행 능력을 갖는 프로세서로 구성된다 ..
2023.10.14 -
운영체제 정리 1장 - 1
본 포스팅은 운영체제 내부구조 및 설계원리를 책을 참고하여 작성한 글입니다. CPU는 다음과 같이 구성(PC, IR, MAR, I/O AR, I/O BR)되어 있으며, PC레지스터는 다음 실행될 명령의 주소를 담고 있고 IR은 실행될 명령어를 담고 있습니다. 메모리 주소 레지스터(MAR: Memory Address Register)와, 메모리에 기록되거나 메모리로부터 읽힐 데이터를 저장하는 메모리 버퍼 레지스터(MBR: Memory Buffer Register)라는 두 개의 내부(처리기에 대해) 레지스터가 이용된다. 입출력 버퍼 레지스터(IOBR: I/O Buffer Register)는 입출력 모듈과 처리기 간의 데이터 교환 목적으로 사용된다. cpu의 기본적인 명령어 사이클은 fetch - execut..
2023.10.14 -
데이터 마이닝(Data Mining) - 개념 정리 1
데이터 마이닝 : 대규모 데이터 집합에서 유용한 정보와 패턴을 추출하기 위해 통계적이고 수학적인 기술을 사용하여 데이터를 분석하고 발견하는 프로세스이다. 이를 통해 숨겨진 통찰력을 얻고, 예측 모델을 개발하며, 의사 결정을 지원하는 데 도움을 준다. 연역적/논리적 추론이 불가능한 경우, 귀납적 추론이 가능한 머신러닝을 활용한다. 하지만 기계가 했던 행동으로 인해 발생한 문제점으로 도입이 꺼려진다. 예를 들면 자동차 사고가 있겠다. 또한, 명령의 이유를 몰라서 도입되기가 꺼려진다. 데이터 : 기록된 사실을 의미한다. 이러한 기록된 사실을 구조적 패턴으로 활용해야 가치가 있다. 정보 : 데이터에 내제된 패턴을 의미한다. 구조적 패턴 : if-then 규칙이 있다. 이런 규칙을 찾아내는 것이 데이터 마이닝, ..
2023.10.08