목록분류 전체보기 (427)
안 쓰던 블로그
ether_addr 구조체 struct ether_addr { unsigned char ether_addr_octet[6]; }; ether_header 구조체 gcc버전에 따라 다르지만 /usr/include/net/ethernet.h 에 위치한다 /* 10Mb/s ethernet header */ struct ether_header { u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */ u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */ u_int16_t ether_type; /* packet type ID field */ } __attribute__ ((__packed__)); ip_header 구..
ARP 헤더 구조 ARP 패킷 만드는 과정 1. 헤더 구조에 맞춰서 구조체를 만들어 주고, 각 값을 채운다 2. 소켓을 열고 보낸다 3. 와이어 샤크에서 ARP 패킷으로 잘 잡히는지 확인한다 코드 #include #include #include #include #include #include #include #include //htons: 엔디안 변경 struct eth_hdr{ //이더넷 헤더 unsigned char h_dest[6]; //이더넷 목적지 주소 6바이트 unsigned char h_source[6]; //이더넷 출발지 주소 6바이트 unsigned short h_type; //다음 패킷 타입 정보 2바이트 } __attribute__((packed)); struct arp_hdr{ //..
tcp라는 이름의 pcap파일을 열어 본다 tcp니까 일단 tcp stream으로 내용을 확인한다 RSA 공개키 정보가 주어졌다 n과 e와 암호화 된 플래그가 있다 e값이 0x10001인데, DEC으로 65537이다 평범한 e값이므로 생각할 수 있는 공격은 n이 DB에 존재하는 소수의 곱이라, 직접 소인수분해를 해서 p, q값을 얻는 방법이다 이런 경우 보통 홈페이지를 이용하므로 여기서 n값을 수인수 분해한 값을 찾아본다 www.factordb.com/ p, q값을 구했으니까 (p-1)*(q-1)로 phi값을 구한다 from gmpy2 import * e = 65537 p = 17389782022211581231 q = 17636271256155186269 phi = (p-1)*(q-1) n=p*q d ..
사내 게시판에 불법 게시물이 몇개 올라왔다가 삭제되었다는 보고를 받았다. 패킷캡쳐로그를 분석하여 해당 게시물을 올린 계정의 id/pw와 글의 내용을 조사하라. 문제에서 볼 내용은 게시판, 게시물, 업로드 후 삭제했다는 내용이다 게시판이니까 웹이라 http를 필터링 하고 object list를 뽑아본다 register.php에서 회원가입하고 write.php에서 게시물을 적고 delete.php가 삭제한 것 같다 이게 다 한 사람이 했는지랑 해커인지를 확인해 보아야 한다 가입, 로그인한 패킷에 가 본다 chk를 보면 POST방식으로 보내져서 item내용이 다 노출되어 있다 id는 guest, pw는 guest 등등으로 가입하고 로그인을 했다 게시글을 하나 썼는데 그냥 평범하다 그 다음 register.ph..
www.acmicpc.net/problem/15721 1) 뻔 – 데기 – 뻔 – 데기 – 뻔 – 뻔 – 데기 – 데기 뻔 – 데기 – 뻔 - 데기 – 뻔 – 뻔 – 뻔 – 데기 – 데기 – 데기 뻔 – 데기 – 뻔 - 데기 – 뻔 – 뻔 – 뻔 - 뻔 – 데기 – 데기 – 데기 - 데기 ... 한 바퀴 돌 때마다 이런 식으로 뻔과 데기가 늘어난다 2) 만약 사람이 7명이고 16번째 뻔을 말한 사람을 구하려면 입력은 7 16 0이고 뻔 데기 뻔 데기 뻔 뻔 데기 데기 뻔 데기 뻔 데기 뻔 뻔 뻔 데기 데기 데기 뻔 데기 뻔 데기 뻔 뻔 뻔 뻔 데기 데기 데기 데기 뻔 이니까 2번째 사람이 16번째 뻔을 말했으니 2를 출력한다 사람은 0부터 센다 3) 사람이 1명일 수도 있다 1명이면 혼자서 뻔 데기를 다..
pdb> incomplete pdb information (GUID/Signature and/or age) associated with this program Either the program is not a PE, or it was not compiled with debug information windows x86 PE RTTI Analyzer> couldn't find type info 분석 옵션 선택할 때 PDB를 끈다 Windows x86 PE RTTI Analyzer> Couldn't find type info structure. 분석 옵션 선택할 때 Windows x86 PE RTTI Analyzer를 끈다
굉장히 익숙한 main함수 자연스럽게 함수 들어간다 처음에 스택 공간 할당하고 CMP RAX, 18과 MOV EAX, 1이 한 세트니까 for문을 0x18번 돈다는 것을 알 수 있다 플래그가 총 0x18(24)글자라는 걸 생각하고 아래 for문을 본다 for문 안에서는 아래같은 연산을 한다 1) 문자열 받은 것과 연산 RAX에 현재 카운터 주소값의 값을 넣고 RCX에는 입력받은 문자열 시작점 주소를 넣는다 EAX에 [시작점+카운터값]주소의 값을 넣으니까 a[i]가 된다(문자열이 a라고 할 때) MOV ECX, DWORD PTR SS:[RSP]에서 RSP는 지금 돌고 있는 카운터 값이다 카운터 값을 ECX에 넣는다는 의미이다 INC는 증감 연산자이다 피연산자++ 동작을 한다 지금은 ECX를 ++하고 있다 ..