- Portsnap 구성 방법Portsnap is a system written by Colin Percival for secure distribution of compressed, digitally signed snapshots of the FreeBSD ports tree. The distribution follows the client–server model and uses the transport protocol HTTP (pipelined HTTP). The base system of FreeBSD includes Portsnap. This is a fast and user-friendly tool for retrieving the Ports Collection and is the recomme..
username, password를 입력할 수 있고 login, join 기능을 이용할 수 있다. 먼저 join을 누르고 username에는 자신이 사용하는 아이디를 입력하고 패스워드는 비워두고 join을 하면 아래와 같이 Done 표시를 볼 수 있다. back을 누르고 첫 페이지에서 join한 계정 정보를 입력하고 login 해보면 아래와 같이 hi! do9dark와 32글자의 user key가 표시된다.user key : 0eda241fc65ccf35d9743309ac395215 32글자이기 때문에 md5 디코딩해보면 zombie라는 값을 구할 수 있다. http://md5decoder.org/ user key에 대해서 좀 더 많은 정보를 얻기 위해서 username: a, password: a로 j..
Blind SQL Injection 문제라고 명시가 되어 있고 입력을 할 수 있고 결과를 출력해주는 부분도 있다. 먼저 숫자 1을 Submit을 해보면 위 그림과 같이 Result: True라고 표시가 되고 숫자 2를 넣어도 마찬가지로 True가 표시된다. 숫자 3이나 -1과 같이 1, 2가 아닌 값을 Submit할 경우 Result: False라고 표시가 된다.URL 값을 보면 파라미터로 no, id, pw가 있는 것을 알 수 있고 이 값들이 테이블의 컬럼명이라고 생각하고 아래와 같이 id의 길이를 알 수 있다. no=1 and length(id)=4를 넣을 경우에 False가 표시된다. no=1 and length(id)=5를 넣을 경우에는 True가 표시된다. 마찬가지로 pw도 길이를 구할 수 있다..
nickname, comment, code를 입력할 수 있고 code 입력하는 곳에 옆에는 nvvbbntlcy 문자열을 볼 수 있다.그리고 time limit : 2와 do not programming! this is javascript challenge 표시되어 있다.소스와 함께 분석을 해보면 화면에 표시되는 문자(랜덤)를 2초 안에 입력을 하고 Submit 버튼을 누르면 문제를 풀 수 있다. 이 문제는 간단하게 Console에 Javascript를 이용하여 풀 수 있다.lv5frm.id.value='do9dark'; lv5frm.cmt.value='comment'; lv5frm.hack.value=lv5frm.attackme.value; lv5frm.submit(); 2초 안에 입력을 해야하기 때문에..
- HTTPD # yum install httpd httpd version# httpd -v iptables 방화벽 등록# iptables -A INPUT -p tcp --dport 80 -j ACCEPT# service iptables save 부팅 시 시작되도록 추가# chkconfig httpd on httpd 시작 및 설정 확인# service httpd start http://localhost 또는 해당 서버의 IP 주소로 접속 httpd configuration/etc/httpd/conf/httpd.conf ServerSignature OffApache 서버 정보 출력 제거 (error page)ServerTokens ProductOnlyApache 서버 정보 출력 최소화 (header) - ..
- vim 설치# yum install vim # vi ~/.bashrc 추가alias vi='vim' 변경사항 적용# source ~/.bashrc # vi - vim 설정 # vi ~/.vimrc (사용자 적용)또는# vi /etc/vimrc (전체 적용) 설정 추가set nocp " Use Vim defaults (much better!)set bs=2 " allow backspacing over everything in insert modeset ai " always set autoindenting onset nobackup " no keep a backup fileset viminfo= " read/write a .viminfo file, don't store more set hi=100 " k..
- telnet 설치 # yum install telnet telnet-server chkconfig 명령어를 통해서 리스트를 확인해보면 xinetd based services 쪽에 telnet이 off 되어 있는 것을 볼 수 있다.(xinetd는 on 되어 있음) 부팅 시 시작되도록 추가# chkconfig telnet on# chkconfig --list telnet# chkconfig xinetd on# chkconfig --list xinetd 설정 확인# cat /etc/xinetd.d/telnet iptables 방화벽 등록# iptables -A INPUT -p tcp --dport 23 -j ACCEPT# service iptables save 데몬 실행# service xinetd sta..
id 를 입력할 수 있는 input form을 볼 수 있고 admin 글자가 적혀져 있다.submit button을 누르면 아래와 같이 you are not admin를 표시를 하고 3초 뒤에 첫페이지로 돌아간다. guest로 시도해보면 다시 처음 페이지로 돌아오고 test 값으로 시도를 해보면 아래와 같이 hello test 표시와 함께 로그인이 된 것을 볼 수 있다. 다른 정보를 찾아보면 기존에 없었던 userid라는 쿠키를 볼 수 있다. test의 userid:Vm0wd2QyUXlWa2hWV0doVlYwZFNVRlpzWkZOWFJsbDNXa2M1VjAxWGVEQmFSV2hyVmxVeFYyTkVRbUZXVjJoeVZtMTRZV015VGtsalJtaG9UV3N3ZUZacVFtRlRNbEpJVm10c2F..
SQL Injection 문제이고 소스 파일이 주어져 있다. 소스를 보면 no 값을 입력할 수 있고 challenge18_table에 컬럼은 id, no가 있고 id는 guest와 admin이 있다는 것을 알 수 있다.그리고 Query를 조작해서 $q가 admin 값을 가져오면 문제를 풀 수 있다. no=1 을 넣었을 경우 hi guest가 출력이 된다. SELECT id FROM challenge18_table WHERE id='guest' AND no=$_GET[no]Query를 보면 WHERE 조건절에 id는 guest라고 명시되어 있고 AND 조건으로 되어 있기 때문에 no 값에 admin의 no 값을 입력하더라도 admin을 나타낼 수 없다.따라서, 앞의 값을 부정시키고 OR 연산자를 이용하여 ..
input form과 check button이 있다. unlock 값을 계산한 값과 input form을 통해서 입력한 값(login.pw.value)이 같을 경우 패스워드가 표시가 된다.이 문제는 간단하게 Console 창에 unlock 변수를 입력하면 자동으로 연산해서 나오는 값 9997809307을 입력해주면 패스워드가 출력이 된다. 그리고 패스워드 값 역시 소스를 보면 입력한 값의 1/10 이기 때문에 간단하게 구할 수 있다. 패스워드를 입력해주면 문제를 풀 수 있다.
크롬에서는 스크립트에 나와있는대로 움직이지 않기 때문에 제대로 움직이는 것이 보고 싶다면 다른 브라우저를 이용하면 된다. 전체적인 소스 내용을 설명하면 onkeypress 속성에 의해서 사용자가 키를 입력하면 스크립트가 동작이 되고 kk(1,1)가 onload 된다. onkeypress = mv(event.Keycode)로 키가 입력이 되면 function mv(cd)가 실행되어 kk(star.style.posLeft-50,star.style.posTop-50);가 실행된다.kk는 function kk(x,y)가 실행되는데 random() 함수를 이용해서 색을 지정해주고 *을 표시해주고 마우스를 가져가면 사라지게 되어있다. 그리고 function mv(cd)에서if(cd==100) star.style.p..
문제에 접근하면 다짜고짜 Access_Denied 창이 뜨면서 이전 페이지로 이동한다.하지만, 이전 페이지에 이동하기 전에 화면 상에 password is off_script 이란 글자가 보인다. (동체시력이 좋으면 바로 풀 수 있는 문제) 동체시력이 안 좋다면 간단하게 주소 앞에 view-source 를 붙여주면 크롬에서는 소스를 보여주기 때문에 화면에 적힌 내용을 확인할 수 있다. Burp Suite를 이용하여 Response 값을 확인해도 동일하게 내용을 확인할 수 있다. off_script 값을 인증해주면 문제를 풀 수 있다.
input form과 check button에 값을 입력하면 Wrong! 이라는 메시지창이 표시된다.소스를 보면 아래와 같이 되어 있다. 먼저 text를 입력할 수 있는 input form이 주어지고 그것을 check하는 button이 있는데, button이 동작하는 onclick을 보면 ck() 함수가 사용된 것을 볼 수가 있다. 여기에서 function ck()를 살펴보면 앞에서 어떻게해서 “wrong!” 생성되었는 지 알 수 있고 password가 무엇인지 알아낼 수도 있다.17번째 줄에 if문에서 ul과 pw.input_pwd.value가 같으면 password를 알려주고, 아닐 경우 “wrong!” 메시지를 생성한다.그렇기 때문에 ul의 값을 알아내기 위해서는 함수의 시작부분인 13번째 줄을 보..
HINT로 컬럼과 테이블이 주어져 있고 입력을 할 수 있는 Submit와 Auth가 주어져 있다. submit에 1,2 그리고 다른 값들을 넣어본 결과 no=1 일 경우에는 result도 1, 그 외에 다른 값들은 result은 0이 표시되었다.(0을 입력하였을 때는 아무런 값도 표시되지 않았다.)이를 통해서 참일 경우에는 result는 1이 표시되고 거짓일 경우에는 0이 표시된다는 것을 알 수 있다. flag 값을 알아내기 위해서 submit에 SQL Injection 해본 결과, =, like, 띄어쓰기 등을 사용하면 no hack이 발생하였다.이를 in(), ^(XOR) 연산자로 우회해서 먼저 flag 값의 개수를 count() 함수를 이용하여 확인해보면 2개가 있는 것을 알 수 있다. ^(XOR)..
javascript challenge 소스를 보면 다음과 같이 되어 있다. String.fromCharCode() 함수 안에 들어가 있는 내용들을 파이썬을 이용해서 디코딩할 수도 있고 더 간단하게는 자바스크립트 콘솔에 wtf만 입력하면 해당 값을 알 수 있다.#!/usr/bin/python# -*- coding: utf-8 -*-# do9dark import sys wtf = "118,97,114,32,101,110,99,111,61,39,39,59,13,10,118,97,114,32,101,110,99,111,50,61,49,50,54,59,13,10,118,97,114,32,101,110,99,111,51,61,51,51,59,13,10,118,97,114,32,99,107,61,100,111,99,..
문제 페이지를 보면 정규표현식과 관련된 문제이고, $pat(정규표현식 규칙)과 $_GET[val] 값이 맞을 경우 Password가 출력된다. 정규표현식을 살펴보면 다음과 같다.$pat="/[1-3][a-f]{5}_.*123.248.181.123.*\tp\ta\ts\ts/"; [1-3] : 1,2,3 중에 하나 일치[a-f] : a,b,c,d,e,f 중에 하나 일치{5} : 앞의 문자 5번 반복_ : _ 문자. : 1개의 문자 일치(어떤 문자라도 상관없다.)* : 0개 이상의 문자 일치(어떤 문자라도 상관없다.)203.246.10.9 : 자신의 IP 주소\t : 탭을 의미(Tab, URL에서 사용시 URL Encoding 하여 사용하면 된다. %09) $pat에 나와있는 정규표현식에만 해당하면 되기 때문..
크롬에서는 동작하지 않아서 사파리를 이용하였다.문제를 보면 붉은 2개의 줄 사이에 회색 줄이 있고 왼쪽에는 O 표시가 있고, 오른쪽에는 | 와 buy lotto가 결승선처럼 되어 있다. O 표시를 누르면 결승선을 향해서 오른쪽으로 이동을 하고 마우스를 올려놓으면 yOu 표시로 변화는 것을 볼 수 있다. 소스를 보면 O 표시가 this.style.posLeft==800에 만족할 경우 this.href=?go=800이 실행되는 것을 알 수 있다. 이를 이용하여 http://webhacking.kr/challenge/codeing/code1.html?go=800 로 접근 해보면 no hack이 표시 된다. 다른 방법으로 시작 위치를 799로 주고 한번만 클릭하면 800이 되도록 하거나 시작 위치를 0으로 주고..
문제에 접근하면 아파치 웹 인증을 하게 되고 실패할 경우 위 그림에 인증 뒷부분에 보이는 것처럼 Unauthorized 즉, 권한이 없어서 접근할 수 없다.아파치 웹 인증은 .htaccess 에서 설정할 수 있고 위 사이트와 같이 특정 디렉터리에 대해 접근에 대한 인증을 사용할 수 있다. require valid-user .htaccess 파일에 내부에 위와 같이 되어 있다면 GET, POST 메소드에 대해서 웹 인증을 거치게 된다. 하지만 GET, POST 외에 다른 메소드나 다른 문자로 요청할 경우 우회해서 접근을 할 수 있다. 이를 막기 위해서는 .htaccess 에서 정의된 메소드 외에는 허용하지 않도록 설정해야 한다. 요청할 때마다 변경하기가 번거롭기 때문에 Burp Suite 기능 중에서 Ma..
- FTP 설정FTP 서비스 자동 실행 설정 # vi /etc/rc.conf ftpd_enable="YES" FTP 접속 메시지 설정# echo 'Welcome :)' >> /etc/ftpwelcome FTP 사용자 접근 설정# vi /etc/ftpusersroot로 접근을 하고 싶은 경우, 해당 파일에서 root 제거 또는 주석(#) 처리 서비스 시작 # service ftpd start# /etc/rc.d/ftpd start FTP 접속# ftp localhost - Anonymous FTP 설정 ftpd 서비스 중지# service ftpd stop ftpd 서비스 자동 실행 설정 주석 처리 또는 제거# vi /etc/rc.conf#ftpd_enable="YES" Anonymous FTP user ..
- USER 생성 대화식 생성 방법 # adduser - USER 삭제 대화식 삭제 방법 # rmuser (FreeBSD 설치 시, freebsd(기본 계정)에 대해서 적절한 조치가 필요함) USER 삭제 # pw userdel username USER 삭제(홈디렉터리 포함) # pw userdel username -r - Anonymous FTP user 계정 생성 - USER 권한 상승일반 사용자 권한으로 su 명령어를 사용할 수가 없다. su: Sorry su: Sorry for normal user account. 일반 사용자 권한으로 su 명령어를 사용하기 위해서는 wheel 그룹을 추가하면 된다. You can fix this problem by adding user account to the..
USER-AGENTdone! (1/70)또는 USER-AGENT Access Denied! 를 볼 수 있다.다른 정보를 얻기 위해서 소스를 보면 index.phps 에 대한 정보를 얻을 수 있다. index.phps 소스 파일 index.phps 파일을 보면 ck[0] 값이 admin 되면 solve 문제가 풀리는 것을 알 수 있다.ck 값을 어디서 가져오는 지 보면 아래와 같이 $_SERVER[HTTP_USER_AGENT]를 통해서 agent 를 비교하고 id를 가져오는 것을 알 수 있다.$q=@mysql_query("select id from lv0 where agent='$_SERVER[HTTP_USER_AGENT]'");$ck=@mysql_fetch_array($q); 공격을 할 수 있는 부분을 ..
auth 를 누르면 아래와 같은 창을 볼 수 있다. 소스를 보면 admin mode 는 val=2라는 것과 index.phps 소스 파일 힌트가 있다. index.phps 파일을 보면 실제로 DB에는 val=2가 존재하지 않고 UNION 즉, SQL Injection을 이용하여 val=2가 되도록 만드는 문제이다.그리고 숫자 2와 더불어 SQL Injection에서 사용되는 문자가 있을 경우 Access Denied! 창을 보여주고 띄어쓰기가 있을 경우 cannot use space 창을 보여주도록 되어있다. 위와 같은 필터링을 우회하여 lv=2를 가져오도록 만들어주면 된다. 그리고 rand(1,5) 함수를 이용하여 Query를 5가지 형태로 만들어 두었으나 5가지 중에서 하나를 선택해서 시도하면 된다...
- FTP 설치 # yum install ftp - VSFTPD 설치 # yum install vsftpd 부팅 시 시작되도록 추가 # chkconfig vsftpd on # chkconfig --list vsftpd vsftpd 서비스 상태# service vsftpd status 설정 파일(옵션 사이에 공백이 있으면 안 됨) # vi /etc/vsftpd/vsftpd.conf # Active Modeport_enable=YES# Passive Modepasv_enable=NO# 숨김 파일 숨기기hide_file={^.*} ## 아래 설정들은 주석을 제거하여 활성화 시키면 된다.# chroot_local_user를 설정하면 자신의 계정에서 상위 디렉터리로 이동 불가 (모든 계정에 적용)chroot_lo..
MySQL에 저장된 데이터 값을 비교할 때 후행 공백에 대해서 무시한다. The CHAR and VARCHAR types are similar, but differ in the way they are stored and retrieved. As of MySQL 5.0.3, they also differ in maximum length and in whether trailing spaces are retained.The CHAR and VARCHAR types are declared with a length that indicates the maximum number of characters you want to store. For example, CHAR(30) can hold up to 30 chara..
SQL Injection 공백을 우회할 수 있는 방법 중에 한 가지. SELECT id,pw FROM user WHERE id='admin' AND pw='admin' OR '1'='1';위와 같은 Query를 실행할 경우 붉은색으로 표시된 부분에 공백을 사용하지 못할 경우 SELECT id,pw FROM user WHERE id='admin' AND pw='admin'/*!OR*/'1'='1';SELECT id,pw FROM user WHERE id='admin' AND pw='admin'/*!12345OR*/'1'='1';다음과 같이 사용할 수 있다. MySQL Server supports some variants of C-style comments. These enable you to write c..
1. Raspberry Pi 2 준비Raspberry Pi 2를 구한다. 2. FreeBSD 다운ftp://ftp.freebsd.org/ 서버에 접근가장 최근의 Snapshots을 다운 받으면 된다.웹 브라우저를 통해서 받아도 되고 FTP를 통해서 받아도 된다. ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.0/FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20150625-r284814.img.xz 3. xz 압축 풀기 4. Micro-SD Card 삽입 후 Burn$ diskutil list또는 $ df -h위 명령어를 이용하여 Micro-SD Card가 삽입된 disk를 확인한다. 그리고 아래와 같이 disk..
- man 설치# yum install man # man iptables iptables란 netfilter Project에서 개발했으며 광범위한 프로토콜 상태 추적, 패킷 애플리케이션 계층검사, 속도 제한, 필터링 정책을 명시하기 위한 강력한 매커니즘 제공 - iptables 설치# iptables -V # service iptables status 만약 설치가 되어 있지 않을 경우 rpm 패키지가 있기 때문에 yum으로 설치하면 된다.chkconfig을 이용하여 부팅 시 자동 실행되도록 설정해준다. rpm 패키지 확인# rpm -qa | grep iptables iptables 설치# yum install iptables chkconfig 등록# chkconfig --level 2345 iptable..