일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- windows kernel debugging
- HackCTF
- 윈도우 커널 드라이버
- hacking
- 개발하기
- 해킹
- 포너블
- pcap packet
- Windows Kernel
- 시스템해킹
- Windows Kernel Debug
- Msvcrt.dll
- Windows
- apphelp.dll
- 윈도우 커널
- packet capture
- pwnable
- IAT Hooking
- 개발 환경 준비
- vcruntime.dll
- 윈도우 커널 디버깅
- 바이트 오더
- Network Byte Order
- ucrtbase.dll
- arudino
- C언어 패킷캡쳐
- vcruntime140.dll
- pcap packet capture
- Windows Kernel Driver
- 네트워크 바이트 오더
- Today
- Total
목록전체 글 (118)
미친해커
치트엔진 튜토리얼 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;..
보호기법은 아무것도 걸려있지 않은걸로 보아 간단하게 풀 수 있는 문제라고 예상된다. main 함수를 분석해보자. main 함수를 보니 이번에는 친절하게 s의 버퍼가 128 바이트라고 명시되어 있다. scanf를 이용하여 개행문자(엔터)가 나오기 전까지 입력을 받고 현재 버퍼의 주소를 출력 후 16바이트 만큼 문자를 출력한다. 그 이상 문자가 있다면 그 다음 주소를 출력하고 또 다시 16바이트 만큼 출력하는 걸 반복하는것 같다. 한번 입력을 시도한 후 출력이 끝나면 다시 입력할건지에 대한 질문이 나온다. 코드만 봐서는 자세히 알 수 없으니 한번 실행을 해보자 한번 실행을 해보니 확실히 알 수 있었다. 버퍼의 주소는 바뀌지 않고 null을 기준으로 출력하기 때문에 뒤에 문자가 더 있어도 출력을 멈추는것 같다..