반응형

1. iBatis


 - SqlMapConfig.properties : DB Connection 설정값 관리 (포트, ID, PW 등)

driver=core.log.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@localhost:1521:XE

username=username

password=password


 - SqlMapConfig.xml : DB Connection 관련 설정 정보 (DB connection 설정값을 불러와 transactionManager 선언 및 sqlMap resource 선언)

<sqlMapConfig>

<properties resource="com/board/db/sqlconfig/SqlMapConfig.properties" />

<settings ... />

<transactionManager type="JDBC">

<dataSource type="DBCP">

<property name="JDBC.Driver" value="${driver}"/>

<property name="JDBC.ConnectionURL" value="${url}"/>

...

</dataSource>

</transactionManager>

<sqlMap resource="com/board/db/sqlmaps/Board.xml"/>

</sqlMapConfig>


 - SqlMapConfig.java : DB 핸들링 객체화


 - SqlMap.xml : CRUD 관련 쿼리

반응형

'Develope' 카테고리의 다른 글

Docker  (0) 2020.11.16
vim 백업파일  (0) 2019.12.17
일기장만들기 프로젝트  (0) 2018.11.25
[JavaScript] 실행 순서 유의 사항!!  (0) 2014.10.12
[HTML & CSS] 모바일 웹 개발 주의사항  (0) 2014.10.03
블로그 이미지

rootable

,
반응형

2018.11.25 프로젝트 시작

2018.11.30 DB연동하여 작성한 내용 저장

2018.12.09 글번호와 현재날짜 자동 등록, 글 리스트 조회 가능

2018.12.10 Model 1 완성(글 생성,수정,삭제,조회 가능)

2018.12.12 MVC 패턴을 위한 기초 공부

2018.12.15 MVC 중 Model 완료, 부트스트랩 적용

 - 참고 : http://bigfat.tistory.com/80


2018.12.17 Controller 구성 완료

2018.12.21 Dlink 방화벽을 이용하여 외부에서 접속 되도록 시도 중

 - 참고 : http://deneb21.tistory.com/180

2018.12.24 MVC 패턴 중 Model 구성 완료

2018.12.25 IBatis 설정 완료 ( 오류가 떠서 해결 중 > 해결 완료, eclipse에서 lib 로드를 위해 refresh )


 - 현재 진행상황 : http://cusmaker.tistory.com/94

반응형
블로그 이미지

rootable

,

[JSP 보안] Secure Coding

2018. 5. 1. 18:42

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

반응형

KALI에서는 ORACLE 설치가 어려우므로 정신건강을 위해 윈도우에서 설치하는 것을 권장드립니다... (제가 진행한 ORACLE 설치법은 알고보니 타 서버에 있는 ORACLE 서버에 bruteforcing을 통해 id와 pw를 얻어내는 툴 사용을 위한 것이었네요...ㅠㅠ)


* https://blog.lael.be/post/858

위의 블로그를 보고 순서대로 따라하면 된다.

다만 진행하다 발생된 이슈에 대해서만 정리한다.


1. sources.list 변경

칼리리눅스에서는 버전에 따라 sources.list를 변경해주어야 한다.


vi /etc/apt/sources.list

를 해준 뒤 아래의 홈페이지를 참고하여 버전에 맞도록 수정해준다.


http://www.kalitut.com/2014/06/fix-kali-linux-sourceslist-repositories.html


나같은 경우 2016.2 버전이므로 

For Kali Linux 2016 – Kali Rolling  use the repo below:

를 보고 하였더니 잘 해결되었다.


2. Service tomcat8 start

블로그를 보면 설치를 하면 바로 실행되는 것처럼 보인다.

하지만 서버를 시작해줘야 되는 것이므로 반드시 tomcat을 실행시켜 주어라.


service tomcat8 start


위와 같이 작성해주면 tomcat이 실행될 것이고 localhost:8080으로 접속하면 It Works라는 반가운 창이 반길 것이다.


만약 접속 포트를 바꾸고 싶다면 /var/lib/tomcat8/conf/server.xml에서 Connector Port 부분을 바꿔주면 된다.


해당 부분을 원하는 포트로 바꾸고 재시작해주면 해당 포트로 WAS를 동작시킬 수 있다.


3. 계정은 생성하자.

블로그에서는 따로 도메인을 생성하지 않고 개인적으로 공부할 경우에는 그냥 9번을 뛰어넘으라 하였지만 난 local에서 동작을 시킬 것이지만 실환경에서는 root가 아닌 웹서버를 위한 계정을 생성하여 등록되어있기 때문에 이에 가장 비슷한 환경에서 진행하기 위해 계정을 추가하였다.


4. DB는 오라클을 !

리얼월드에서는 JSP와 ORACLE이 세트로 가장 잘 나오므로 ORACLE을 설치하였다. (PHP와 Mysql은 Windows 환경에서 진행해보기도 하였으니!)


1. 먼저 자신이 Oracle을 설치하려는 서버가 몇 bit로 동작하는지를 확인 후 ORACLE 사이트에 접속하여 아래에 해당하는 파일 3개를 받는다.


instantclient-basic-linux-12.1.0.2.0.zip

instantclient-sqlplus-linux-12.1.0.2.0.zip

instantclient-sdk-linux-12.1.0.2.0.zip



2. /opt 내에 oracle 폴더를 생성한 뒤 다운 받은 파일들을 해당 폴더로 이동시킨다.

cd /opt

mkdir oracle

mv [다운받은 파일 경로]/instantclient-* /opt/oracle/


3. /opt/oracle 폴더로 가 다운받은 파일들을 unzip 명령어로 풀어준다.

cd /opt/oracle

unzip instantclient-basic-linux-12.1.0.2.0.zip

unzip instantclient-sqlplus-linux-12.1.0.2.0.zip

unzip instantclient-sdk-linux-12.1.0.2.0.zip

이 때부터 sqlplus는 사용이 가능하다.


4. 이후부터는 정리하지 않습니다. 필요하신 분들은 참고 보고 이어해주시길 바랍니다. 정리하지 않는 이유는 상단에 나와있습니다..


참고 : https://blog.zsec.uk/msforacle/

참고 : https://github.com/rapid7/metasploit-framework/wiki/How-to-get-Oracle-Support-working-with-Kali-Linux

참고 : https://mjsoracleblog.wordpress.com/2015/08/19/five-steps-to-have-your-own-metasploit-and-oracle-demo-environment/

반응형

'Develope > JSP' 카테고리의 다른 글

[JSP] html entity escape ( XSS prevention )  (0) 2020.07.23
[JSP 보안] Secure Coding  (0) 2018.05.01
블로그 이미지

rootable

,
반응형
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
# -*- coding: cp949 -*-
import optparse
from socket import *
from threading import *
 
screenLock = Semaphore(value=1)
 
def connScan(tgtHost, tgtPort):
    try:
        connSkt = socket(AF_INET, SOCK_STREAM)
        connSkt.connect(tgtHost, tgtPort)
        connSkt.send('ViolentPython\r\n')
        results = connSkt.recv(100)
        screenLock.acquire()        # 출력하기 전에 세마포어 습득
        print '[+]%d/tcp open'% tgtPort
        print '[+] ' +str(results)
    except:
        screenLock.acquire()        # 출력하기 전에 세마포어 습득
        print '[-]%d/tcp closed'% tgtPort
    finally:
        screenLock.release()        # 쓰레드가 끝날 때 놓아줌
        connSkt.close()
        
def portScan(tgtHost, tgtPorts):
    try:
        tgtIP = gethostbyname(tgtHost)
    except:
        print "[-] Cannot resolve '%s': Unknown host" %tgtHost
        return
    try:
        tgtName = gethostbyaddr(tgtIP)
        print '\n[+] Scan Results for: ' + tgtName[0]
    except:
        print '\n[+] Scan Results for: ' + tgtIP
    setdefaulttimeout(1)
    for tgtPort in tgtPorts:
        t = Thread(target=connScan, args=(tgtHost, int(tgtPort)))
        t.start()
        
def main():
    parser = optparse.OptionParser('usage %prog -H <target host> -p <target port>')
    parser.add_option('-H', dest='tgtHost', type='string', help='specify target host')
    parser.add_option('-p', dest='tgtPort', type='int', help='specify target port[s] separated by comma')
    (options, args) = parser.parse_args()
    tgtHost = options.tgtHost
    tgtPort = str(options.tgtPort).split(', ')
    if (tgtHost == None) | (tgtPort == None):
        print '[-] You must specify a target host and port[s].'
        exit(0)
    portScan(tgtHost, tgtPorts)
 
if __name__ == '__main__':
    main()
 
cs

출처 : Violent Python ( 해커의 언어, 치명적 파이썬)

반응형
블로그 이미지

rootable

,
반응형

해결한 결과 Python 2.x 버전과 Python 3.x 버전을 둘다 설치했던 적이 있어서 꼬인 것이였다.


해결방법은 레지스트리에서 설정을 바꿔주면 된다.


1. regedit을 실행시킨다.

 - 시작 > 실행 > regedit > 확인



2. [Ctrl + F] 를 눌러 찾기에서 pythonw 를 찾아 원하는 버전으로 모두 되어있는지 확인한다.

 - 만약 Python 2.x 버전을 사용할 것인데 3.x 버전으로 설정되어 있다면 2.x 버전의 폴더로 설정해준다.

 - (기본값)을 더블클릭해주면 아래와 같이 편집창이 뜬다. 형광으로 칠한 부분을 변경시켜주면 된다. (3.x 버전이라면 아래 부분을 3.x 버전의 설치폴더로)




반응형

'Develope > Python' 카테고리의 다른 글

Python code to create Numeric list  (0) 2019.12.26
[Python] frida 설치 및 에러 해결  (0) 2019.01.03
[Python] Port Scanner  (0) 2017.01.22
[Python] 간단한 파이썬 취약점 스캐닝 스크립트  (0) 2016.10.29
[Python] 내장함수  (0) 2014.10.28
블로그 이미지

rootable

,
반응형


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
import socket
import os
import sys
 
 
def retBanner(ip, port):
    try:
        socket.setdefaulttimeout(2)
        s = socket.socket()
        s.connect((ip, port))
        banner = s.recv(1024)
        return banner
    except:
        return
 
 
def checkVulns(banner, filename): 
    f = open(filename, 'r')
    for line in f.readlines():
        if line.strip('\n'in banner:
            print '[+] Server is vulnerable: ' +\
                banner.strip('\n')
 
 
def main():
    if len(sys.argv) == 2:
        filename = sys.argv[1]
        if not os.path.isfile(filename):
            print '[-] ' + filename +\
                ' does not exist.'
            exit(0)
 
        if not os.access(filename, os.R_OK):
            print '[-] ' + filename +\
                ' access denied.'
            exit(0)
    else:   
        print '[-] Usage: ' + str(sys.argv[0]) +\
            ' <vuln filename>'
        exit(0)
 
    portList = [21,22,25,80,110,443]
    for x in range(147150):
        ip = '192.168.95.' + str(x)
        for port in portList:
            banner = retBanner(ip, port)
            if banner:
                print '[+] ' + ip + ' : ' + banner
                checkVulns(banner, filename)
 
 
if __name__ == '__main__':
    main()
cs


출처 - 해커의 언어, 치명적 파이썬

반응형

'Develope > Python' 카테고리의 다른 글

Python code to create Numeric list  (0) 2019.12.26
[Python] frida 설치 및 에러 해결  (0) 2019.01.03
[Python] Port Scanner  (0) 2017.01.22
[Python] Edit with IDLE가 안될 때  (2) 2017.01.21
[Python] 내장함수  (0) 2014.10.28
블로그 이미지

rootable

,
반응형

** 시퀀스 자료형 = 문자열, 리스트., 터플


abs(x)         = 절대값을 돌려주는 함수

apply(function, (args))         = 함수이름과 인수를 받아 간접적으로 함수 실행

chr(i)                 = 아스키코드 값을 입력받아 해당 문자 출력

cmp(x,y)         = x와 y 비교 (x>y이면 1 / x==y이면 0 / x<y이면 -1)

dir(객체)         = 객체가 가지고 있는 함수들(메소드)를 보여줌

divmod(a,b)         = a/b와 a%b를 터플의 형태로 리턴

enumerate(s)         = 시퀀스자료형을 입력받아 순서값(인덱스)과 실제값을 반환

eval(expression)         = 실행가능한 문자열을 입력받아 실행한 결과값을 반환

execfile(file)         = 파일 이름을 입력받아 파일을 실행시키는 명령

filter(function, list)         = 리스트의 값이 하나씩 함수에 인수로 전달되어 참을 반환하는 값만 모아 리스트의 형태로 리턴

hex(x)         = 정수값을 입력받아 hex값으로 반환

id(object)         = 객체의 고유값(reference)를 반환

input([prompt])         = 사용자의 입력을 받는 함수 (입력 인수로 문자열을 주면 그 문자열은 프롬프트가 된다)

int(x)                 = 스트링 형태의 숫자나 소숫점 숫자 등을 정수의 형태로 반환

int(x, radix)                 = x라는 문자열을 radix(진수)형태로 계산한 값을 리턴

isinstance(object,class) = 인스턴스가 입력받은 클래스의 인스턴스인지 판단하여 참이면 True, 거짓이면 False 반환

lambda         = 함수를 생성할 때 사용되는 예약어로 def와 동일하나 간결하게 혹은 def를 쓸 수 없는 곳에서 사용

len(s)                 = 인수로 시퀀스 자료형을 입력받아 요소의 개수를 리턴

list(s)                 = 인수로 시퀀스 자료형을 입력받아 그 요소를 같은 순서의 리스트로 만들어 리턴

long(x)         = 숫자형태의 문자열이나 숫자를 인수로 받아 큰 정수형으로 리턴

map                 = 함수와 시퀀스 자료형을 입력 받아 시퀀스 자료형의 각 요소들을 함수의 입력으로 하여 나온 출력값을 리스트 형태로 리턴

max(s)         = 입력받은 시퀀스 자료형 중 최댓값을 돌려주는 함수

min(s)         = 입력받은 시퀀스 자료형 중 최솟값을 돌려주는 함수

oct(x)         = 정수 형태의 숫자를 8진수 문자열로 리턴

open(filename, [mode]) = 파일이름과 읽기 방법을 입력받아 파일 객체를 리턴 / mode 생략시 읽기 전용 모드로 만듦

ord(c)         = 문자의 아스키 값 리턴 ( <-> chr(i) )

pow(x,y)         = x의 y 제곱한 결과값을 리턴


반응형
블로그 이미지

rootable

,