| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 시스템해킹
- pcap packet capture
- Msvcrt.dll
- hacking
- Network Byte Order
- pcap packet
- Windows Kernel Driver
- Windows
- 윈도우 커널 디버깅
- windows kernel debugging
- vcruntime.dll
- 윈도우 커널 드라이버
- IAT Hooking
- 네트워크 바이트 오더
- pwnable
- Windows Kernel
- C언어 패킷캡쳐
- 개발하기
- 개발 환경 준비
- 해킹
- vcruntime140.dll
- 바이트 오더
- Windows Kernel Debug
- apphelp.dll
- ucrtbase.dll
- 윈도우 커널
- HackCTF
- packet capture
- 포너블
- arudino
- Today
- Total
목록전체 글 (119)
미친해커
Step 3는 Step 2와 비슷한데 다른 점이 있다면 초기 값 (풀피인 경우)이 몇인지 알려주지 않는다는거다. 하지만 설명을 읽어보면 값이 0~500 사이라고 알려주고 있고 클리어 방법은 이 값을 5000 이상으로 바꾸는 것이다. 그러면 초기 값을 정확히 알지 못해 어떻게 스타트를 해야하는지 막히게 되지만 치트엔진에는 Unknown value라고 값을 정확히 알 수 없을 때 사용하는 검색 옵션이 존재한다. 위와 같이 Scan Type을 Unknown initial value로 맞춰주고 스캔한다. 그 다음 왼쪽 리스트를 보면 아무것도 표시되진 않지만 왼쪽 리스트 위에 Found 된것을 확인 할 수 있다. 이 상태에서 Hit me를 눌러 체력을 깎아주자 그러면 HP가 몇이 깎였는지 나오게 된다. 우리는 이..
치트엔진 튜토리얼 Step 2 에서는 본격적으로 치트엔진을 사용해 해결하는 문제이다. 우선 클리어 방법은 Health를 1000으로 바꾸면 클리어이다. 우선 Hit me 버튼을 클릭해보자 Hit me 버튼을 클릭하면 Health가 점점 떨어진다. 그렇다면 Health의 값이 Hit me를 클릭할때마다 바뀐다는 것이다. 치트엔진에는 이 처럼 값이 바뀌는 변수를 검색 할 수 있는 기능이 있다. Value에 초기 값 (검색할 값)을 넣고 First Scan을 누르자 그러면 오른쪽 그림과 같이 96이라는 값을 가진 데이터들의 주소들이 검색되어 나온다. 지금은 검색된 주소? 값? 이 너무 많으니 Hit me를 눌러 값에 변화를 준다. 위와 같이 값이 바뀌었다 그렇다면 바뀐 값을 넣고 Next Scan을 눌러주자 ..
오랜만에 치트엔진이 생각나서 다시 공부도 해볼겸 치트엔진 튜토리얼을 포스팅하기로 결정했다. (바야흐로 블로그 주인장이 중딩일때 치트엔진가지고 게임핵을 만들어봄 경험이...) 아무튼 치트엔진은 다음과 같이 생겼다. 치트엔진이 없다면 여기서 다운받으면 된다. https://cheatengine.org 치트엔진을 켜고 다음과 같이 들어가면 튜토리얼을 실행시킬 수 있다. 튜토리얼을 실행시키면 뭐라고 영어로 적혀있는데 간단히 요약해서 '현재 이 튜토리얼 프로그램을 치트엔진에서 attach(어태치) 시켜라' 라는 말이다. 어태치라는건 치트엔진에 대상 프로그램을 연결시킨다고 보면 된다. 왼쪽위 모니터 아이콘을 클릭하고 Process List에서 튜토리얼 프로그램을 찾아 클릭하고 Open 버튼을 눌러준다. 이렇게 튜토..
ASLR (Address Space Layout Randomization, 주소 공간 배열 무작위화) ASLR 보호기법이란 말 그대로 주소를 매번 실행 때마다 랜덤하게 배치하는 것을 말한다. PIE 보호기법과 비슷하다고도 볼 수 있는데 엄연히 다른 보호기법이다. ASLR은 데이터 영역의 주소를 랜덤하게 배치한다. 그 이유는 ret 주소를 임의로 조작할 수 있을 때 가장 필요한 것은 주소이다. 공격자가 주소를 알 수 있다면 그 주소에 ShellCode와 같은 악성코드를 주입하여 실행시킬 수 있기 때문이다. 그렇다면 그 ShellCode와 같은 것이 작성되는 영역은 데이터 영역이기 때문에 이 영역의 주소를 랜덤하게 배치되도록 만든다면 공격을 훨씬 어렵게 만들 수 있기 때문이다. 간단요약 데이터 영역의 주소를..
PIE (Position Independent Executable, 위치 독립 실행 파일) PIE 보호기법이란 메모리의 어딘가에 위치한 기계어 코드의 몸체로서 절대 주소와 관계 없이 적절히 실행된다. 즉 메모리상의 명령어들의 위치가 매번 바뀐다는 의미이다. PIE 보호기법이 적용된 프로그램은 특별한 코드 수정이 없이 어느 메모리 주소에서도 실행이 가능하며 메모리 주소의 제약을 받지 않는다. 이 보호기법은 주로 RTL(Return To Libc), ROP(Return Oriented Programming) 과 같은 바이너리에서 실행 가능한 코드의 오프셋을 필요로 하는 공격 기법을 사용하려고 할때 이 코드가 어디에 존재하는지를 알 수 없게 한다. 간단요약 프로그램이 실행 될때마다 그 메모리 주소를 바꾸어 이..
┌──(root💀DESKTOP-H0EJIE2)-[~/Hacking/Pwnable/HackCTF/offset] └─# checksec offset [*] '/root/HackCTF/offset/offset' Arch: i386-32-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled 보호기법은 스택 카나리를 제외한 모든 보호기법이 걸렸이다. 생각 외로 어려운 문제가 될수도 있다고 생각한다. Funtions window를 확인해보니 main 함수 이외에도 사용자 정의 함수가 여럿보인다. 아무래도 print_flag 함수를 실행시키면 flag를 따낼 수 있을것으로 보인다. int print_flag() { char i;..