분류 전체보기 74

webhacking.kr 17번 풀이

webhacking.kr 17번 풀이 [HINT] 1. javascript JS는 client side script이므로 클라이언트 측에서 소스를 열람할 수 있고 변조할 수 있다. 소스에선 unlock 변수에 계산하기 힘든 사칙연산의 결과값을 저장하고 있고,sub()함수는 페이지에 있는 textbox의 값이 unlock 변수에 저장된 값과 같으면 Password is (unlock/10)를 출력한다. 열람도 가능하고 변조도 가능하기 때문에 풀이 방법은 여러가지 방법이 될 수 있다.첫 번째로 소스코드를 열람 할 수 있는 성질을 이용할 수 있다. 사칙 연산의 내용을 볼 수 있기에 python이나 다른 스크립트를 통해 unlock의 값을 계산해낼 수 있다.직접 손으로도 가능하긴 하다. 두 번째 방법으로는 페이..

webhacking.kr 4번 풀이

webhacking.kr 4번 풀이 webhacking.kr은 문제 목표가 뚜렷해서 공부하기 편하지만가끔 무슨 의도의 문제인지 모르는 문제들이 있다.그 중 하나인 문제 같다. [HINT] 1. base 642. Rainbow Table 문제는 Password를 입력할 수 있는 textbox와 summit 버튼, 알 수 없는 문자열을 볼 수 있다.뒤에 '==' 패딩되어 있는 것을 보아 base64로 인코딩된 문자열인 것을 확인 할 수 있다.알파벳 대소문자, "+", "/" , "="으로 이루어져있고, 24bit단위로 인코딩 되기 때문에 24bit단위가 아닌 문자열의 끝에는 "=", "=="으로 패딩된다. 24bit 단위인 문자열은 패딩 문자 "="가 붙지 않으므로 패딩 문자가 없다해서 base64가 아닐거..

[LOB] cobolt

소스코드 분석 gremlin과 비슷하게 인자 첫번째 값을 buffer에 복사한다. 여전히 취약한 함수인 strcpy를 이용한다.하지만 주석처리된 힌트를 보면 small buffer를 볼 수 있다. cobolt 문제에서는 배열의 크기가 16밖에 되지 않는다. 문제 풀이 cobolt도 역시 strace를 통해 바이너리를 추적하여 ret 주소를 덮어씌우는 위치를 찾아낸다.cobolt에서는 buffer의 크기 16byte + sfp의 크기 4byte를 가져 21byte 째부터 ret 주소를 덮어씌우는 것을 확인 할 수 있다.총 20byte의 쉘코드를 삽입 할 수 있지만, gremlin에서 사용했던 20byte가 넘는 쉘 코드를 사용할 수 없을 뿐 더러 20byte보다 작은 값을 쉘코드를 사용했다 하더라도 NOP..

[LOB] gremlin

소스코드 분석 argc가 2개 미만 즉 인자가 없으면 프로그램을 종료하고, 아니라면 첫 번째 인자 값을 버퍼에 복사한 뒤 출력한다.simple BOF문제이다. 문제 풀이위의 소스에서 보았듯이 BOF문제다. 문제는 strcpy 함수를 사용하고 있기 때문에 BOF가 발생한다.strcpy 함수는 메모리 경계를 검사하지 않아 buffer의 크기보다 큰 길이의 값을 복사하게 되면 buffer를 넘어서 다른 값 까지 덮어씌운다.그렇다면 buffer의 크기를 넘어선 값을 입력하게 되면 무슨 일이 일어나는지 확인해보자. 다음은 gremlin 프로그램에 A를 261개 삽입했을때 strace를 이용하여 바이너리를 추적한 결과값이다. ret 값을 덮어쓰기 시작하여 segmentation fault가 발생한 것을 알 수 있고..

아파치 보안 설정

1. 서버 정보 숨기기 2. 디렉토리 인덱싱 차단 3. 심볼릭 링크 차단 4. 웹 서버 프로세스 권한 제한 5. HTTP Method 제한 6. 에러페이지 설정 7. SSL 프로토콜 및 알고리즘 설정 8. http 접속 시 https 리다이렉트(RewriteEngine) 9. 특정 디렉터리 내 파일 실행 차단 * 앞으로 시간나면 추가할 예정 1. 서버 정보 숨기기 웹 페이지의 헤더와 404 에러페이지에서 서버에서 사용하고 있는 우분투 버전/ OS 정보가 노출되었다. 1-Day공격으로 이어질 수 있기 때문에 보안 상 당연히 이런 서버 정보가 노출되는 것을 차단하게 권장하고 있다. 버전정보 노출 여부를 설정하는 파일의 위치는 OS별로 아래와 같다. 우분투 : /etc/apache2/conf-available..

Server 2018.04.11

Raspberry Pi 3 외부접속

마냥 집에서 죽치고 앉아있을 수도 없는 노릇이고 밖에서 서버를 만지고 싶을 때를 대비해서 외부접속할 수 있게 만들고 싶다. 라즈베리파이에서 ssh를 연결할 수 있게 포트를 열어놓아야한다. 우분투 마테 16.04.2버전은 os를 설치하면서 이미 ssh가 설치되어 있었지만 만약 ssh가 설치 안됬음을 대비해서 $ sudo apt-get update $ sudo apt-get install ssh 데비안 패키지를 통해 ssh를 설치해주자 ssh가 이미 설치되어 있거나 설치했다면, ssh 서비스를 시작한다 $ sudo systemctl enable ssh $ sudo systemctl start ssh $ sudo systemctl status ssh enable 옵션은 서비스가 부팅시 자동으로 실행되도록 하는..

Raspberry Pi 2018.04.04

Raspberry Pi 3 우분투 마테(MATE) 설치

Raspberry Pi 3를 구동하기 위해 OS를 올려야하는데 한글 지원에 친철한 리눅스 우분투 MATE를 선택했다. 물론 한글 타자기는 패키지를 통해 추가 설치를 해주어야 한다. Raspberry Pi 3에 OS를 올리기 위해선 SD카드, SD카드리더기, HDMI 케이블, 전원장치가 필요하다. 일부 SD카드는 기종에 따라 지원하지 않기도 하며, 3 모델 B의 경우 전원은 2.5A/5V 이상을 권장하는 등 보유하고 있는 SD카드나 전원장치가 가지고 있는 라즈베리파이 모델이 지원하는지 확인하고 가자. 만약 스타터 패키지를 구매했다면 걱정할 필요 없다. 1. Raspberry Pi 3 용 Ubuntu OS 설치 https://ubuntu-mate.org/download/ 이미지 파일은 공식 홈페이지에서 다운..

Raspberry Pi 2018.04.04