일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Smashing The Stack For Fun And Profit
- WEB
- forensics
- 리버싱
- 정답
- 해설
- 해킹 공부
- Aleph One
- 시스템
- 시스템해킹
- 리눅스
- 버퍼오버플로우
- write up
- grep
- Protostar
- general skills
- KOISTUDY
- Hxd
- picoCTF2018
- 스택
- CTF
- #hacking
- reversing
- #picoCTF2018
- cryptography
- 번역
- picoCTF
- dreamhack
- writeup
- 카이사르
- Today
- Total
목록Hacking&Security (17)
Security || AI
이번에 미국 NSA에서 기존의 비쌌던 IDA에 버금가는 성능인 오픈소스 디버거 툴인 기드라(Ghidra)를 공개하면서 IDA대신 사용할 수 있는 디버거가 생겼다. 이 글에서는 기드라를 설치하고 프로그램을 분석할 수 있게 실행을 하는 방법에 대해서 다루어 볼 것이다.https://ghidra-sre.org/ 이 링크에서 설치할 수 있다. Download Ghidra를 클릭하면 압축파일을 다운받게 되는데, 압축파일을 다운받은 후 원하는 폴더에다가 압축을 풀면 된다. 여기서 ghidraRun.bat을 실행시키면 ghidra가 실행된다. 이 창이 뜨면 I agree를 눌러 동의하면 된다. 이제 여기까지 진행되면 설치는 완료된 것으로 이제 리버싱을 할 파일을 불러오면 된다.좌측상단에 File을 누르면 가장 처음에..
올리디버거를 실행하는 과정에서 Themida 또는 Winlicense라는 제목의 실행 오류 창이 뜹니다. 오류의 내용을 보면 "디버거가 시스템에서 실행 중이므로 이를 메모리에서 제거한 후 프로그램을 다시 실행해라" 라는 말이 뜹니다. 해결방법 1. 작업표시줄에서 오류창의 아이콘을 우클릭한 후 프로그램의 이름을 확인합니다. 2. 작업관리자에 들어가 해당 프로그램의 파일 위치를 확인합니다. (우클릭해서 확인 가능) 3. 프로그램의 폴더 안에 uninstall.exe나 unins.exe 와 같이 프로그램을 삭제하는 프로그램이 있으면 프로그램을 실행시켜서 삭제하거나 제어판에 들어가 해당 프로그램을 삭제합니다. 주로 은행같은 곳에서 설치한 보안프로그램이 오류를 일으키는 경우가 많습니다.
번역한 내용들이 있는 PDF입니다.
Small Buffer Overflows작은 버퍼오버플로우~~~~~~~~~~~~~~~~~~ 버퍼오버플로우하려는 버퍼가 너무 작아 쉘코드를 넣기에도 맞지 않는 경우가 생길 것이고, 우리의 코드의 주소를 덮어쓰는 것이 아닌 명령들로 반환 주소들을 덮어쓸 수 있거나, 문자열 앞에 채우는NOP들의 수가 너무 적어 그들의 주소를 맞추기 어려울 때가 있다. 이런 프로그램들로부터 쉘을 얻으려면 다른 방법을 사용해야 한다. 이 특별한 접근은 프로그램의 환경 변수에 접근할 때만 작동할 수 있다. 우리가 할 것은 우리의 쉘코드를 환경 변수에 위치시키고, 버퍼를 메모리에 있는 변수의 주소로 오버플로우하는 것이다. 이 방법은 쉘 코드를 포함하는 환경 변수를 원하는 크기로 만들 수 있으므로 익스플로잇 방법의 변경도 증가시키다...
Writing an Exploit익스플로잇 짜기~~~~~~~~~~~~~~~~~(or how to mung the stack)(또는 어떻게 스택을 망가뜨리는가)~~~~~~~~~~~~~~~~~~~~~~~~~` 이제 모든 조각들을 조합해 보자. 우리는 쉘코드를 가지고 있다. 우리는 이것이 버퍼오버플로우에 사용할 문자열의 부분이 되어야 한다는 것을 알고있다. 우리는 버퍼에 복귀 주소를 다시 지정해야한다는 것을 알고 있다. 이 예제는 이러한 점들을 증명할 것이다: overflow1.c------------------------------------------------------------------------------char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0..
쉘 코드Shell Code~~~~~~~~~~ 이제 우리는 반환 주소(return address, RET)와 실행의 흐름을 수정할 수 있다는 것을 알게 되었다. 이제 어떤 프로그램을 실행하는 것을 원하는가? 대부분의 경우 우리는 프로그램이 쉘을 실행 시키는 것을 원한다. 그런 다음 쉘로부터 우리는 원하는 명령들을 내릴 수 있다. 만약 우리가 이용하려는 프로그램안에 그러한 코드가 없다면 어떻게 할 것인가? 어떻게 임의의 명령을 주소 공간에 위치시킬 것인가? 정답은 오버플로우가 일어나는 버퍼에 실행하려고 하는 코드를 배치시키고, 반환 주소(return address, RET)에 덮어씌워 버퍼로 다시 이동 시키는 것이다. 스택의 주소가 0xFF에서 시작한고, S는 우리가 실행하기를 원하는 코드라고 생각하면서 스..