일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해킹
- C언어 패킷캡쳐
- ucrtbase.dll
- packet capture
- Windows Kernel
- 네트워크 바이트 오더
- pcap packet
- 시스템해킹
- Msvcrt.dll
- apphelp.dll
- Windows
- Windows Kernel Debug
- hacking
- 윈도우 커널
- 바이트 오더
- 포너블
- windows kernel debugging
- Network Byte Order
- pwnable
- arudino
- 개발하기
- vcruntime.dll
- 윈도우 커널 디버깅
- IAT Hooking
- 개발 환경 준비
- vcruntime140.dll
- Windows Kernel Driver
- HackCTF
- 윈도우 커널 드라이버
- pcap packet capture
- Today
- Total
목록hacking (3)
미친해커
이번 포스팅부터 본격적으로 IAT Hooking에 대해서 알아보도록 하자 [Reversing] IAT Hooking Step 0 IAT(Import Address Table) Hooking 이란 IAT에 적혀있는 API의 주소를 조작하여 후킹하는 기법을 말한다. IAT에는 응용 프로그램이 호출하는 API의 함수명, 함수 주소 등이 기록되어 있다. 해당 응용 프로그 crazyhacker.tistory.com 저번 포스팅에서 간단히 PE 구조와 IAT의 구조에 대해서 배웠었다. 이번엔 IAT에서 등록되어 있는 함수들의 이름과 주소를 불러오는 프로그램을 만들어보도록 한다. Source Code #include #include int main(int argc, char *argv[]) { // 현재 프로그램의 ..
문제 이름을 보아 Buffer OverFlow 문제로 예상된다. 우선 바이너리를 다운받아 IDA Pro 로 디스어셈블을 해보자 코드를 보면 변수 s와 함수 포인터 v5가 선언되어 있다. s는 배열인것으로 보인다. 그리고 v5에 sup라는 함수의 주소를 넣고 fgets를 이용해 s에 133(0x85)바이트 만큼 입력을 받은 후 v5에 들어있는 함수를 실행한다. s의 공간은 0x8C - 0xC = 0x80 총 128 바이트이다. s부터 +129 바이트부터는 v5의 데이터가 들어가 있다. fgets에서 133 바이트를 s에 입력받으니 Buffer OverFlow가 발생돼 v5의 데이터를 덮어쓸 수 있다. 그렇다면 v5의 데이터를 덮어씌어 실행되는 함수를 다른함수로 조작하여 flag를 얻어낼 수 있을 것..
지금까지 블로그 작성을 미루다가 19살이 되어 본격적으로 HackCTF를 풀면서 Write-Up 을 작성하게 되었다.. 너무 늦은 감이 있지만 지금부터라도 열심히 해야지 쓸때없는말은 여기까지! HackCTF의 첫번째 포너블 문제다. 이름이 Basic_BOF 인 것으로 보아 간단한 Buffer OverFlow 문제로 예상된다. 바이너리를 다운받을 수 있으니 IDA Pro를 이용해 디컴파일을 해보자 main 함수를 보니 변수 s와 v5가 선언되어 있다. s에 데이터를 입력받고 s와 v5의 데이터를 출력한다. s부터 v5까지의 거리는 0x34 - 0xC = 0x28 총 40바이트이다. 즉 s의 공간은 40바이트이다. 아래쪽 if 문에서 v5가 0xDEADBEEF 라면 Shell을 띄워준다. fget..