분류 전체보기 76

webhacking.kr 8번 풀이

webhacking.kr 8번 풀이 [HINT] 1. SQL Injection in INSERT query2. 환경 변수 문제에서는 클라이언트의 HTTP_USER_AGENT와 REMOTE_ADDR를 가져와 각각 $agent,$ip에 저장한다.$agent 변수에서 문자열 앞 뒤 공백 제거, 일부 문자열 치환 및 필터링, 소문자 치환 과정을 거친다. 이후 $_SERVER를 통해 HTTP_USER_AGENT를 가져와서 싱글쿼터(')와 \를 필터링한다.싱글 쿼터(')와 \를 필터링한 HTTP_USER_AGENT의 값으로 쿼리를 불러오고 쿼리의 반환 값으로 "admin"이 있다면 문제를 해결할 수 있다."admin" 값이 없다면 agent, ip, id 테이블 안에 각각 변수 $agent,$ip 와 문자열 'gu..

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