해킹

해킹/리버싱

[해킹] 전용 레지스터

전용레지스터 Accumulaotr(누산기 AC) - 데이터를 일시 정장하는 레지스터이다. 기억장치로부터의 읽어온 데이터와 누산기에 적재되어 있던 데이터가 지정된 연산을 수행한 후 그 결과 값을 다시 누산기에 적재한다. 누산기 내용을 넌부 지워 0으로 만들 수 있으며, 왼쪽이나 오른쪽으로 몇 자리씩 움직일 수도 있다. 누산기의 비트 수는 CPU가 한 번에 처리할 수 있는 데이터 비트 수의 word의 길이와 같다. 데이터 일시저장, AC := AC의 현재값 + 메모리로부터 읽어온 값 Program Counter(프로그램 카운터 PC) : address of next instruction to execute. - 다음에 수행될 명령어의 주소를 가지고 있는 레지스터. PC 값은 word의 크기에 따라 1 또는 ..

해킹/시스템해킹

[시스템해킹] HackCTF < Basic_FSB >

https://ctf.j0n9hyun.xyz/challenges#Basic_FSB CODE int __cdecl main(int argc, const char **argv, const char **envp) { setvbuf(stdout, 0, 2, 0); vuln(); return 0; } int vuln() { char s[1024]; // [esp+0h] [ebp-808h] BYREF char format[1032]; // [esp+400h] [ebp-408h] BYREF printf("input : "); fgets(s, 1024, stdin); snprintf(format, 0x400u, s); return printf(format); } int flag() { puts("EN)you have ..

해킹/시스템해킹

[시스템해킹] FSB(Format String Bug) 이란?

FSB(Format String Bug) FSB(Format String Bug)란 버퍼 오버플로우 해킹 기법중 하나이며 사용자의 입력을 통해 프로그램의 흐름을 바꿀 수 있는 취약점이다. FSB(Format String Bug) printf의 인자 개수는 포맷 문자 개수로 결정됩니다. buf의 값에 우리가 마음대로 입력이 가능하다면 우리가 원하는 포맷문자를 넣어서 조작이 가능해집니다. BOF가 발생하지 않아도 원하는 값을 얻을 수 있습니다. 오른쪽으로 상황에서는 FSB취약점이 발생하여 main 함수 스택의 내용을 모두 노출 시킬 수 있습니다. %p 출력 %p를 통해 다음 주소를 유출 시킬수 있으며 %[숫자]$p를 통해 숫자만큼 떨어져 있는 메모리를 출력 가능하다. 위와 같이 입력하게 되면 다음 스택의 메..

해킹/시스템해킹

[시스템해킹] GrabCON Pwn CTF? write up

GrabCON CTF 마지막 문제입니다. CODE 아이다로 키면 메인이 존재하지 않습니다. start부터 찾아 나갑니다. void __usercall __noreturn start(int a1@, void (*a2)(void)@) { int v2; // esi int v3; // [esp-4h] [ebp-4h] BYREF char *retaddr; // [esp+0h] [ebp+0h] BYREF v2 = v3; v3 = a1; __libc_start_main(sub_1357, v2, &retaddr, sub_13B0, sub_1420, a2, &v3); __halt(); } int __cdecl sub_1357(int a1) { setvbuf(stdout, &dword_0 + 2, 0, 0); sub_1..

해킹/시스템해킹

[시스템해킹] GrabCON easy_bin write up

GrabCON CTF 이번 GrabCON에 참가하며 pwnable만 살짝 풀고 나왔다. 총 4문제가 있었는데 3문제밖에 못 풀어서 매우 슬프다 ㅠ CODE int __cdecl main(int argc, const char **argv, const char **envp) { char v4[48]; // [rsp+0h] [rbp-30h] BYREF gets(v4, argv, envp); printf("well lets check if you can bypass me!!!"); return 0; } __int64 vuln() { execve("/bin/sh", 0LL, 0LL); return 0LL; } 너무나도 간단한 BOF문제인것 같습니다. 파일은 64BIT로 페이로드는 dummy[48] + sfp[8]..

해킹/시스템해킹

[시스템해킹] Buffer Overflow(BOF)

BUFFER OVERFLOW BOF 설정되어 있는 버퍼의 크기보다 크게 입력을 받을 수 있을 때 생기는 취약점입니다. int __cdecl main(int argc, const char **argv, const char **envp) { char s[40]; // [esp+4h] [ebp-34h] BYREF int v5; // [esp+2Ch] [ebp-Ch] v5 = 0x4030201; fgets(s, 45, stdin); printf("\n[buf]: %s\n", s); printf("[check] %p\n", v5); if ( v5 != 0x4030201 && v5 != 0xDEADBEEF ) puts("\nYou are on the right way!"); if ( v5 == 0xDEADBEEF ..

해킹/리버싱

[해킹] 레지스터

레지스터 : CPU의 변수 범용 레지스터 8 bit Register : AH, AL 16bit Register : AX 32bit Register : EAX 64bit Register : RAX - 범위 레지스터: CPU에서 사용하는 변수의 일종 - EAX 산술 계산을 하며 리턴값을 전달합니다. 가장 많이 사용하는 변수 입니다. - EDX 큰 수의 곱셈 또는 나눗셈 연산 - ECX C : Counter 이다. 반복문에서의 카운터 for문의 i++의 역할이지만 반복문을 돌만큼 값을 저장한 후 감소하는 형태로만 작동합니다. - EBX EAX, EDX, ECX와 같은 일정의 변수 - ESI 문자열이나 각종 반복 데이터를 처리 또는 메모리 옮기는 데 사용합니다. - EDI 일종의 변수 ESI는 시작지 인덱스, ..

해킹/리버싱

[해킹] 리버싱 시작

CTF에서의 리버싱 프로그램 구조 분석 분석을 바탕으로한 코드 재구현 역연산을 통한 플래그 획득 -> 플래그 획득을 위해서는 프로그램의 구조를 분석하고 이해하는 과정이 필수적입니다. 결국 리버스엔지니어링은 많이 분석할수록 실력이 늡니다. 다른 분야와는 달리 기법을 배운다기 보다는 새로운 유형을 접한다는 방식으로 공부합니다. 해킹 기반 지식 Linux - 해킹을 하기 위해선 linux를 다룰 수 있어야 합니다. Programming - 적어도 1개의 언어는 배우는 것이 많은 도움이 될 겁니다. 특히 c언어는 시스템 해킹을 하기 위해선 필수로 알아야 합니다. 소스코드 컴파일 #include int main() { printf("Hello World!!"); return 0; } 위와 같은 "Hello Wor..

해킹/리버싱

[해킹] 해킹의 시작

해킹이란..? 해킹은 타인의 컴퓨터 시스템에 무단 침입하여 데이터에 접속할 수 있는 권한을 얻는 것입니다. 해킹은 크래킹과 개념이 다릅니다. 쉽게 해킹은 "해킹을 하여 소스 코드를 보다"이고 크래킹은 "해킹을 하여 그 소스 코드를 파괴한다"인 것입니다. 그렇기 때문에 해킹을 배우는 우리는 법의 선을 잘 지켜야 합니다. 해킹의 종류 기술적 해킹 타겟 시스템과 기술에 대해 깊게 이해 높은 비용이 들지만 은밀한 공격을 수행 가능. 사회공학적 해킹 사람과 사람 사이의 취약점을 공략하여 원하는 정보를 얻는 공격 쉽게 가능하면서 사람들이 많이 당함. 하지만 눈에 잘 띄는 공격 사회공학적 해킹은 사실 모두가 이미 해봤을 거라고 생각합니다. 해킹의 범주 War 국가 간의 전쟁 돈과 명예 버그 바운티 CTF 취약점 거래..

나봄하랑
'해킹' 태그의 글 목록