2019. 11. 27.

[네트워크] MITM 공격

참고)와이어샤크 유용한 명령어 tcp.port == 80  http // http 프로토콜 만 출력 ip.addr == 192.168.0.1 // 특정 ip와의 통신만 출력 ARP 스푸핑 상대방 IP 주소로 접속하는 명령을 내리면 호스트는 네트워크 전체에 ARP 요청을 보내어 누가 그 IP를 가지고 있는지 물어보게 된다. 이때 요청하는 IP가 맞는 호스트가 응답해야하는데 해커가 ARP 요청을 중간에서 가로채어 응답을 하는 것이다. 그러면 해커쪽으로 접속하게 만들 수 있다. 이는 칼리리눅스에 arpspoof...

Continue reading

HTTP Parameter Pollution (HPP) 취약점

HTTP Parameter Pollution 취약점을 줄여서 HPP 라고 부른다. HTTP 파라미터 오염 취약점은 서버단과 클라이언트 단 에서 설명이 가능하다. [서버단]  https://backend.example/doTransfer.php 파라미터 : toAccount=9844&amount=1000&fromAccount=12345 이를 toAccount=9844&amount=1000&fromAccount=12345&toAccount=99999 [클라이언트 단] <? $val=htmlspecialchars($_GET['par'],ENT_QUOTES);...

Continue reading

Android APK 진단을 위한 툴 소개

Android APK 진단을 위한 툴 소개 네트워크 통신을 하는 앱이라면, 웹 진단 툴을 함께 사용한다. 1) Apktool 링크 : http://ibotpeaches.github.io/Apktool/ ApkTool은 apk파일은 디컴파일하거나 수정한 후 다시 컴파일 할 수 있는 Tool . 여러 옵션이 있지만 자주 사용하는 옵션은  d 옵션 : decompile 해주는 옵션으로 smali 파일이 아웃풋 b 옵션 : recompile 해주는 옵션으로 apkfile이 아웃풋으로 나오며, signing을 거쳐 안드로이드폰에 설치가 가능. d -d 옵션 : decompile 해주는 옵션으로 smali 파일이 아웃풋으로 나오지만, 확장자를 java파일로 만들어주어 동적디버깅 할 때 사용. 2)...

Continue reading

안드로이드 취약점 점검, ADB 살펴보기

ADB (Android Debug Bridge) 는 안드로이드 에뮬레이터나 PC에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 중 하나이다. 안드로이드 스튜디오와 같은 안드로이드 통합 개발 환경에서는 기능을 GUI 형태로 제공하는 반면, ADB 는 명령라인을 통해 사용자가 명령어를 입력함으로써 안드로이드 기기와 통신하고 있다. ADB는 안드로이드 SDK 에 포함되어 있으며, SDK 설치 폴더의 하위 폴더인 platform-tools 에 포함되어 있다. adb devices 명령을 실행한 결과 1개의 device가...

Continue reading

ios 무결성 취약점 점검

iOS 앱의 바이너리 파일을 변조하여 무결성 검증 로직이 존재하는지 확인하는 점검[1단계]- 모바일 앱의 바이너리 파일(payload/app_name)은 애플 사의 암호화 방식으로 암호화 되어 있으므로 복호화를 해야 함- 설치된 디렉토리로 이동하면 암호화 되어 있지만, 앱 구동 시 복호화 하게 되어 있음- 설치된 앱(구성) 디렉토리 : /private/var/containers/Bundle/Application/- Clutch2를 이용해 바이너리 파일을 복호화를 하면 Clutch2가 설치된 디렉토리에 복호화 된 파일이 저장됨- Clutch2 -i : 복호화를 할 앱의 목록 출력- Clutch2 -b 숫자 : 지정된 앱(숫자)를 복호화 ** ios 버전에 따라서 clutch 를 통한 복호화가 안되는 경우가...

Continue reading

iOS 취약점 점검 - DVIA 설치

1. 탈옥 우선 iOS 폰이 탈옥이 되어있어야 한다. (루팅이라고도 함) 탈옥의 방법은 굉장히 다양하고 애플 정책에 따라 계속 바뀌므로 따로 기재하지는 않는다 2. 점검 할 앱 설치 (DVIA) - http://damnvulnerableiosapp.com/(https://github.com/prateek147/DVIA-v2/releases)  이는 무료로 제공하는 iOS 점검용 앱인데, swift와 object-c 버전이 각각 다운받을 수 있다.  그리고 루팅 폰에서 아래를 설치한다. cydia...

Continue reading

2019. 10. 30.

[python] 크롤링 데이터를 mysql에 삽입

이전 포스트(https://coashanee5.blogspot.com/2019/10/blog-post_29.html)는 공공기관의 채용공고 사이트의 검색결과를 수집하여 기업명과, 공고URL을 출력하였다. 이번 포스트에서는 수집한 내용을 데이터베이스에 넣어 보도록 하겠다. 1. 우선 mysql을 설치를 한 후, 데이터를 넣기 위한 데이터베이스를 만든다.  create DataBase scraping; 2. 이번에는 데이터를 저장할 테이블을 생성한다.  create Table job_offer (id BIGINT(7)...

Continue reading

2019. 10. 29.

[python] 공공기관 채용정보시스템의 채용공고 출력하는 파이썬코드

공공기관 채용정보시스템에서 원하는 공고를 검색하여 크롤링하는 소스이다. # 공공기관 채용정보에서 정보통신 공고만 추려서 리스팅하는 소스 import requests from bs4 import BeautifulSoup from urllib.request import urlopen import re import ssl import datetime context = ssl._create_unverified_context() # url을 변수에 삽입하여 저장한다. url = "https://job.alio.go.kr/recruit.do?pageNo=1&param=&search_yn=Y"...

Continue reading

구글 블로거 꾸미기 -5 google blog 에서 소스코드 하이라이트 (highlight)

블로그 성격상 소스코드를 작성할 일이 많은데, 소스코드를 멋지게 작성하는 방법을 소개한다. 1. Highlight.js 코드 구문 강조를 위한 자바스크립트 라이브러리이다. 자동으로 언어를 감지하여 알맞는 표식을 삽입한다. http://highlightjs.org/ 사이트에서 다운로드가 가능하다. 홈페이지에 보면 hosted와 custom package 두 가지 방법이 있다고 나와 있는데, google blog는 hosted 방식을 사용하면 된다. 아래 소스를 html 소스 중 <head></head> 안에 삽입하면 사용할 준비는 끝이다. <link rel="stylesheet" href="//cdn.jsdelivr.net/highlight.js/8.7/styles/monokai_sublime.min.css"...

Continue reading

2019. 10. 27.

구글 블로거 꾸미기 -4 글머리 기호(리스트) 기능 활성화

구글 블로그에서 글을 작성할때 아래와 같이 '글머리 기호' 기능이 필요할 때가 있다.  AAA BBB CCC 이런 기능을 말함 그러나 어처구니 없게도 글을 작성할때는 되는가 싶다가도 게시하면 글머리가 사라진다. 1. '글머리 기호(리스트)' 기능 활성화 - 테마 -> HTML편집 -> 검색 -> 아래와 같이 수정 - 수정 전 .widget ul {list-style: none;margin : 1.5em 0 0;} - 수정 후 .widget ul {  list-style:...

Continue reading

구글 블로거 꾸미기 -3 피드 구독하기 기능 삭제

처음 블로거를 시작하면 하단에 "피드 구독하기: 게시물(Atom) 이라는 정체를 알수 없는 기능이 보여진다. 페이지를 볼때는 "피드 구독하기: 댓글(Atom) 도 있다. 사실상 거의 필요없는 기능이라 생각되어 기능을 제거하기로 했다. 1. "피드 구독하기:게시물(Atom)" 이 표시되지 않도록 설정 - 테마 -> 템플릿 -> 맞춤설정 -> 고급 -> CSS추가 -> 아래 코드 삽입 .blog-feeds{display:none;} 2. "피드 구독하기:댓글(Atom)"이 표시되지 않도록 설정 - 테마...

Continue reading

구글 블로거 꾸미기 -2 우클릭, 드래그 방지

자신의 블로그에서 우클릭, 드래그가 안되게 하고 싶어하는 경우가 있을 것이다. 1. 우클릭 방지 - 관리페이지 > 테마 > HTML 편집 - Ctrl + F 로 </body> 를 찾은 후 바로 위에 아래 코드를 삽입한다.  <script language=javascript> <!-- var message=""; function clickIE() { if (document.all) { (message);return false;} } function clickNS(e) { if (document.layers||(document.getElementById&&!document.all))...

Continue reading

2019. 10. 26.

구글 블로거 꾸미기 -1 스킨, 나눔고딕 폰트 적용

약 4년동안 나름 비주류인 구글 블로그를 하면서 많은 시행착오를 겪었었다. 지금도 고난(?)은 진행중이지만 나와 같은 시행착오를 겪고 있는 사람들에게 도움이 되었으면 하는 바램에 간단하게 나마 글을 작성한다. 1. 이미 만들어진 스킨을 이용하자. 구글 블로거는 HTML과 CSS 등을 기본적으로 요구하기 때문에 진입장벽이 타 블로그 보다는 높은 편이다. 그럼에도 불구하고 여러 스킨들을 제공하기 때문에 이를 적용하여 조금씩 수정해가면 나름 만족할 수준의 블로그를 만들 수 있을 것이다. http://newbloggerthemes.com/ http://btemplates.com/ 구글...

Continue reading

2019. 10. 18.

[python] 아나콘다(anaconda) 에서 jupyter notebook 실행시 에러 발생

문제. - 아나콘다 에서 jupyter notebook 을 실행 할때 해당 경로에 가서 명령어(C:\Users\dojang>C:\Users\dojang\Anaconda3\python.exe -m notebook --notebook-dir C:\project) 를 입력만 하면 되었다. (회사 환경에서는) - 그런데 집에서는 "ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다." 라는 오류가 발생한다. 해법. - 문제의 원인은 찾지 못했지만 해결책은 찾았다. conda 환경을 갖추고 거기서 주피터를 실행한다 - cd C:\Users\ABC\Anaconda3\Scripts -> activate.bat -> jupyter.exe notebo...

Continue reading

2019. 10. 15.

[python] requests 로 로그인 후 크롤링

requests 로 로그인 하고 BeautifulSoup으로 데이터 가져오기 import requests from bs4 import BeautifulSoup login_url = 'http://www.hanbit.co.kr/member/login_proc.php' user = '' password = '' # requests.session 메서드는 해당 reqeusts를 사용하는 동안 cookie를 header에 유지하도록 하여 # 세션이 필요한 HTTP 요청에 사용됩니다. session = requests.session() params = dict() params['m_id'] = user params['m_passwd'] = password # javascrit(jQuery) 코드를 분석해보니,...

Continue reading

2019. 10. 14.

[python] 네이버 open api 를 통한 크롤링 수집

소스코드 ㅇㅇㅇ import urllib.request import json client_key = '키 값' client_secret = '시크릿 값' # 한글등 non-ASCII text를 URL에 넣을 수 있도록 "%" followed by hexadecimal digits 로 변경 # URL은 ASCII 인코딩셋만 지원하기 때문임 encText = urllib.parse.quote_plus("스마트폰") # print(encText) naver_url = 'https://openapi.naver.com/v1/search/news.json?query=' + encText # urllib.request.Request()는 HTTP Header 변경시에 사용함 # 네이버에서도...

Continue reading

2019. 10. 11.

[python] 네이버 검색 정보 크롤링해서 DB에 넣기

import requests from bs4 import BeautifulSoup from urllib.request import HTTPError import pymysql import datetime headers = {'User=Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'} def blog_crawling(keywords): start_time = datetime.datetime.now() conn = pymysql.connect(host=xxxxxx', user='xxxx', password='xxxxx',...

Continue reading

[python] pythonista 에서 모듈 설치, stash

모바일에서 파이썬 코딩하는 최고의 도구 pythonista 를 잘 사용하고 있다. pythonista 에서 모듈을 설치하고 싶을 때 다음과 같은 방법을 통해 모듈을 설치 할 수 있다. 1. stash 를 설치한다. https://github.com/ywangd/stash 에 installation 을 복사하여 pythonista에 추가 즉 import requests as r; exec(r.get('https://bit.ly/get-stash').text) 를 복사하여 pythonista에서 실행 실행 결과 ios에는 lunch_stash.py 가 실행되는데 이를 실행하면 프롬프트가 실행된다.  pip install 모듈명 으로 원하는 모듈 설치 참고  htt...

Continue reading

2019. 10. 8.

[MySQL] 외부에서 mysql에 접속하자

aws lambda 를 공부하다보면 외부에서 mysql에 접속해야 할 일이 있다. 그러기 위해 필요한 준비가 바로 '외부에서 나의 MySQL 서버로 접속하기' 이다.  그러면 이제 우리는 외부 접속용 계정을 만들고, 그 계정에 데이터베이스 접근 권한을 부여하고  서비스 재시작을 하면된다. 1. mysql 설정파일 수정(리눅스의 경우 /etc/my.cnf, 윈도우의 경우 my.ini) 필자는 windows 에 mysql을 설치했으므로 C:\ProgramData\MySQL\MySQL Server 8.0 폴더에서  my.ini를 수정한다. bind-address=0.0.0.0 설정이 되어 있다면 주석처리하고, 그렇지 않다면 건너뛴다. 2. 원격에서 mysql에...

Continue reading

2019. 9. 29.

[python] 위키피디아 데이터 수집 후 DB에 저장

위키피디아 데이터 수집 후 DB에 저장하는 파이썬 코드 from urllib.request import urlopen from bs4 import BeautifulSoup import re import datetime import random import pymysql conn = pymysql.connect(host='127.0.0.1',user='root',passwd='2kdskfk1!@', db='scraping', charset='utf8') cur = conn.cursor() cur.execute("USE scraping") random.seed(datetime.datetime.now()) def...

Continue reading

[python] mysql 과 파이썬 연동

파이썬에서 mysql 을 사용하려면 pymysql 모듈을 pip로 설치해야 한다. import pymysql conn = pymysql.connect(host='localhost', user='root', passwd='비밀번호', db='scraping') cur = conn.cursor() cur.execute("SELECT * FROM pages WHERE id=1") print(cur.fetchall()) cur.close() conn.close()...

Continue reading

2019. 9. 28.

MYSQL 개발 툴로 접속이 안될때

mysql 을 설치하고 나서, cmd command 에서는 접속이 잘되는데,  개발 툴 ( 나의 경우엔 toad for mysql ) 로는 접속이 안된다.  해결 방안은 다음과 같다.  1. mysql installer - community 를 설치 2. mysql server 에서 Reconfigure 클릭 3. use Legacy Authentication Method 선택   ...

Continue reading

2019. 9. 24.

웹 서버와 구조의 이해

웹 애플리케이션 서버와 웹 프레임워크 구조의 이해 웹 애플리케이션 서버는 정적 페이지와 동적페이지 요청을 모두 처리할 수 있다. 정적 페이지는 html, javascript, css 처럼 미리 작성되어 있어 서버 측의 실행이 요구되지 않는 응답 페이지를 의미하며, 동적 페이지는 서버 측에서 무엇인가를 실행해 요청에 따라 생성되는 응답 페이지를 의미한다. 웹 서버는 사용자의 요청을 수신하면 로컬 저장소의 경로에서 해당 파일을 찾아 응답(Response)한다. 하지만 동적인 요청을 수신하게 되면 동적 요청을 처리할 수 있는 웹 애플리케이션을...

Continue reading

2019. 9. 23.

[python] 웹 크롤링, 네이버 웹툰 제목

from bs4 import BeautifulSoup from pprint import pprint import requests html = requests.get("http://comic.naver.com/webtoon/weekday.nhn") bsObj = BeautifulSoup(html.text, "html.parser") #첫번째 가공 date1 = bsObj.find('div',{'class':'col_inner'}) #print(date1) #두번째 가공 date2 = date1.findAll('a',{"class":"title"}) #print(date2) for name in date2 : print(name.get_text()) ''' for...

Continue reading

2019. 9. 22.

[python] 홈페이지 전체 페이지 크롤링

from urllib.request import urlopen from bs4 import BeautifulSoup import re pages = set() def linkUrl(addrUrl) : html = urlopen("https://en.m.wikipedia.org/wiki/Main_Page") bsObj = BeautifulSoup(html.read(), "html.parser") for i in bsObj.findAll("a",href=re.compile("(^/wiki/)")) : if "href" in i.attrs : if i.attrs["href"] not in pages : newPages = i.attrs["href"] pages.add(newPages) ...

Continue reading

[python] 현재 사이트에서 랜덤으로 외부 사이트 링크 타고 가기

현재 사이트에서 a href 목록을 수집하여 외부사이트를 선별하여 링크를 출력한다. from urllib.request import urlopen from bs4 import BeautifulSoup import re from urllib.parse import urlparse import random import datetime pages = set() random.seed(datetime.datetime.now()) def internalLinks(bsObj, host) : internalLink = [] #/로 시작하거나 중간에 루트 도메인 주소가 포함된 링크를 찾는다. for link in bsObj.findAll("a", href=re.compile("(^/|.*"+host+")"))...

Continue reading

[python] 다음 실시간 검색어 리스트 추출

# 다음 실시간 검색어 순위 목록 추출 from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("https://m.daum.net/?nil_top=mobile") bsObs = BeautifulSoup(html.read(), "html.parser") for i in bsObs.find("div",{"class":"keyissue_area"}).findAll("span",{"class":"txt_issue"}) : print(i.get_text(...

Continue reading

2019. 9. 17.

[python] 위키백과 정찰

 # 위키백과 최초 페이지에서 랜덤으로 링크페이지에 접속하여 링크가 없을때까지 반복하는 프로그램 from urllib.request import urlopen from bs4 import BeautifulSoup import re import random import datetime random.seed(datetime.datetime.now()) def linkaddr(addr) : listing = [] html = urlopen("http://en.wikipedia.org"+addr) bsObj = BeautifulSoup(html.read(), "html.parser") for link in bsObj.find("div", {"id":"bodyContent"}).findAll("a",href=re.compile("^(/wiki/)((?!:).)*$"))...

Continue reading

2019. 8. 18.

자바스크립트 난독화 관련

자바스크립트 난독화를 복호화 할 필요가 있어서 여러자료를 알아보다가 제일 깔끔한 자료를 발견하였다. 구글 블로거 특성상, 파일 업로드를 할 수는 없지만, Pioneer of Security Research 에서 제작한 것으로 보이는 javascript code obfuscation 자료이다. 대표적인 난독화 기법에 대한 설명, 그리고 난독화 코드 해제 방법까지 자세히 서술하였다. 파일명은 obfuscation.pdf 인데 구글에서 바로 검색이 되는지 잘 모르겠다. ...

Continue reading

2019. 8. 17.

침해사고 관련 주요 CMD 명령어

1. 포트 및  PID 확인 netstat -ano | find "LISTENING" | find "80" 2. PID를 가진 프로세스 확인 tasklist /FI "PID eq 3792" 3. PID를 가진 프로세스 죽이기 taskkill /F /PID 3792 4. 해당 포트를 사용하는 프로세스를 직접 확인하는 방법 C:\> for /f "tokens=5" %p in (' netstat -ano ^| find "LISTENING" ^| find "80" ') do tasklist /FI "PID eq %p" 5. 해당 프로세스 중지하기 C:\> for /f "tokens=5" %p in (' netstat -ano ^| find "LISTENING " ^| find "80"...

Continue reading

2019. 8. 10.

JSP 선언부의 올바른 사용

< body> <%!       String name;       name=”jong”; %> < /body> 위의 경우에는 에러가 난다. 그 이유는 <%! 는 선언부를 의미하는데 선언부는 말 그대로 선언해주는 구문만을 사용할 수 있다. 해결방안은 1. 선언과 동시에 초기화 하는것과, <%! String name = "jong"; %> 2. 선언영역은 선언자로 선언이외의 다른 작업은 다른 영역에서 작성해주는 것이다 <%! String name; %> <% name = "GD"; %> ...

Continue reading

2019. 5. 29.

2019. 4. 27.

centos 7 네트워크 수동 설정

오랜만에 VMWARE에 centos 를 재설치하였는데 IP 를 자동으로 설정이 안되었다. 1. vmware 네트워크 정보 확인 vmware 의 edit > virtual network editor 에서 Subnet IP, Subnet-mask, GW IP 를 확인 2. ens33 인터페이스 설정 vi /etc/sysconfig/network-scripts/ifcfs-ens33 설정 - BOOTPROTO를 dhcp에서 none 으로 설정 - ONBOOT 를 no에서 yes로 수정 IPADDR=아이피주소 NETMASK = 서브넷마스크값 GATEWAY=IP주소 DNS1=8.8.8.8 3. 네트워크 재시작 systemctl restart NetworkManager systemctl...

Continue reading

2019. 1. 11.

[WEB] 버프스위트 필터 기능 팁

버프스위트 필터 기능 활용할때 유용한 팁 하나를 기록한다. Proxy - http history 에서 필터를 클릭하면 다양한 옵션을 지정 할수 있다 잘 활용하면 아주 편리하다. Filter by search item 에 찾고자하는 문자열 넣으면 해당 문자열이 포함되어 있는 항목만 출력된다. Case sensitive 는 대소문자 구별 Regex 에는 정규표현식 Negative search는 입력하는거 빼고 나머지 출력...

Continue reading

2019. 1. 6.

[모바일] 드로저 활용한 앱 취약점 점검

[드로저 명령어] run app.package.list  - 디바이스에 설치된 모든 앱의 패키지명 출력 run app.package.list -f insecure(설치 앱)  - 특정단어가 포함되어 있는 패키지명 검색 run app.package.info -a com.android.insecurebankv2  - 패키지 명으로 앱의 기본적인 정보를 얻기 위한 명령어  - 패키지의 이름으로 프로세스 정보 버전, 데이터를 저장하는 위치, apk 파일의 위치, UID 등을 알 수 있으며,...

Continue reading

2019. 1. 3.

2019. 1. 2.

[트러블슈팅] 특정 페이지에 패킷이 잡히지 않을때

문제. 특정 메뉴에 접속하려고 하는데(예를 들어 게시판) proxy 로 잡은 후 forward forward 하면 접속이 안된다. 게시판 페이지가 뜨기 까지 총 3번 요청을 보내야 하는데 , 1번만 요청되고 서버로부터 sessionOK 문자열이 전달되면서 더 이상 요청이 안된다. 즉, 1,2,3 세개 요청을 보내는데 통신 시간을 체크하는것으로 보인다. 때문에 패킷을 잡으면 정해진 통신 시간과 맞지 않기 때문에 통신이 드랍된다. 해결책으로 첫번째 요청과 응답을 아애 인터셉트 안하도록 함으로써 바로 2번째 패킷을 잡는다. [조치설정] '요청값 인터셉트 정책 변경' 1) 맨 처음 요청 uri 을 does not match 로 한다. Proxy > Options > Intercept...

Continue reading

2019. 1. 1.

[모바일] drozer 설치

드로저는 모바일 애플리케이션 취약점 진단 프레임워크인 머큐리 새로운 업데이트 버전이다. 윈도우와 리눅스를 지원하며 JRE, JDK, 안드로이드 SDK 가 설치되어 있어야만 사용 할 수 있다. 안드로이드 가상 디바이스 또는 단말기에 에이전트를 설치한 후 PC에서 ADB로 명령을 내리는 서버와 클라이언트 방식으로 동작한다. 드로저는 가상 디바이스 뿐만 아니라 실제 안드로이드 디바이스에서 테스트할 수 있으며, 자동 테스트도 가능하다. 1. 드로저 다운로드 및 실행 https://labs.mwrinfosecurity.com/tools/drozer/ drozer(MSI)와...

Continue reading

Popular Posts

Recent Posts

Blog Archive

Powered by Blogger.