분류 전체보기
-
[와이어샤크 #4] 프로토콜과 애플리케이션 설정, 프로파일 사용법EVI$ION/Wireshark 2019. 5. 20. 23:46
※ 실습에 사용된 파일: http-pcaprnet101.pcapng [프로토콜과 애플리케이션 설정] 프로토콜 설정은 Edit → Preferences → Protocols로 들어가거나, 우클릭 → Protocol Preferences에서 설정할 수 있다. (이유는 모르겠지만 프로토콜 설정할 때에는 우클릭으로 들어가는게 더 좋다고 한다.) 1. 보조 해석기가 TCP 스트림 재조립을 허용 (Allow subdissector to reassemble TCP streams) 이 설정은 기본적으로 활성화되어 있지만 HTTP 트래픽 분석 시 문제가 발생할 수 있기 때문에 분석할 때에는 설정을 해제해주는 것이 좋다. 해당 설정을 해제하면 HTTP 트래픽의 상세창에서 HTTP 응답 코드를 볼 수 있다. 해당 설정이 켜..
-
[Webhacking.kr] Challenge 59 풀이Wargame/Webhacking.kr 2019. 5. 19. 03:34
59번 문제로 들어가보면, 회원가입과 로그인을 할 수 있는 입력창이 보인다. 개발자도구를 실행해서 각 입력칸이 무엇을 의미하는지 알아보았다. 소스코드를 통해 두 입력칸이 각각 id와 phone을 입력받는 곳임을 알 수 있었다. 개발자도구로는 더 알아낼 정보가 없어서 이번엔 소스 링크를 클릭해보니 해당 페이지의 소스코드가 나왔다. 아래에 있는 if문이 JOIN에 대한 조건인 것 같으니 아래 조건문부터 먼저 살펴보자. 이 조건문에서는, 입력받은 phone의 길이가 20 이상이거나, 문자열 내에 admin, 0x, #, hex, char, ascii, ord, from, select, union 중 하나라도 포함되어 있으면 Access Denied 문구와 함께 페이지를 종료한다. 또한 입력받은 id가 admi..
-
[Webhacking.kr] Challenge 54 풀이Wargame/Webhacking.kr 2019. 5. 19. 02:20
54번 문제로 들어가면, Password is라는 문구가 뜨고, 일정 시간마다 한글자씩 보여준다. 개발자도구를 실행해 소스를 확인해보았다. 소스를 보면 run( ) 함수와 answer( ) 함수가 정의되어 있다. 먼저 run( ) 함수를 간단하게 살펴보자. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }e..
-
[Webhacking.kr] Challenge 39 풀이Wargame/Webhacking.kr 2019. 5. 18. 23:09
39번 문제로 들어가보면, id를 입력하는 칸과 제출 버튼만 달랑 있다. 일단 아무거나 입력하고 제출해봤더니 아래와 같은 에러 문구가 출력되었다. 17번째 줄에서 mysql_fetch_array()를 통해 요청한 쿼리가 틀렸기 때문인 것으로 보인다. 개발자도구를 통해 소스를 확인해보았다. 소스코드에서 index.phps로 이동해보라 해서 들어가보니, Challenge 39의 소스코드가 나와있었다. 소스 코드를 간단히 해석해보면 다음과 같다. if($_POST[id]) { $_POST[id]=str_replace("\\","",$_POST[id]); //백슬래시(\) 필터링 $_POST[id]=str_replace("'","''",$_POST[id]); //싱글 쿼터(') 1개를 싱글쿼터 2개('')로 필..
-
[Webhacking.kr] Challenge 26 풀이Wargame/Webhacking.kr 2019. 5. 18. 00:10
26번 문제로 들어가면, 아무것도 없이 그냥 index.phps 링크만 있다. 이 링크로 들어가보자. index.phps로 들어가면 아래와 같이 간단한 소스코드가 나온다. 제일 먼저 eregi 함수가 보이는데, 이 함수는 admin이라는 문자열을 필터링하고 있다. 따라서 admin을 입력하려면 eregi 함수를 우회할 필요가 있다. 그리고 GET 방식으로 입력받은 id를 urldecode 함수로 URL 디코딩한 후 다시 id에 저장한다. 그 다음 id가 admin인지 검사하여, id가 admin이면 문제가 해결된다. 처음에는 eregi 함수만 우회하기 위해 %00(null)을 써준 뒤에 admin을 URL 인코딩한 문자열인 %61%64%6d%69%6e을 GET 방식으로 전송해봤지만, no 메시지가 출력되..
-
[시스템해킹 #4] NOP Sledding, strcpy와 gets, 링크, RTLEVI$ION/SYSTEM HACKING 2019. 5. 13. 00:49
[NOP Sledding] NOP Sled, NOP Slide, NOP Sliding이라고도 한다. NOP(No-OPeration)은 어셈블리어 명령어 중 하나로, 기계어 표현은 운영체제에 따라 다르다. (Linux: \x90, Window: 0x1C0C1C1C) NOP Sledding은 의미 있는 명령어가 나올 때까지 실행 포인터를 이동시키는 기법이다. 즉, 고의적으로 실행 흐름을 늦추는 것으로, 쉘코드의 위치가 불분명할 때 NOP Sledding 기법을 사용한다. (※ 주의: 쉘코드를 삽입할 때 적어도 쉘코드의 앞뒤에는 NOP을 넣어주는 것이 좋다. 쉘코드가 스택의 범위를 넘어서서 쉘코드가 정상적으로 실행되지 않을 수 있기 때문이다.) NOP Sledding은 시스템해킹 뿐만 아니라 웹해킹에서도 사용..
-
[Webhacking.kr] Challenge 32 풀이Wargame/Webhacking.kr 2019. 5. 12. 03:21
32번 문제로 들어가면 hit 수에 따른 랭킹이 나와있고, 맨 아래에는 join 버튼이 있다. join 버튼을 클릭하면 Done이라는 팝업창이 뜨고, 화면에는 내 아이디와 함께 hit 수가 보인다. 처음에는 hit가 0인데, 내 아이디를 한번 클릭하면 hit가 1로 변한다. 한번 더 내 아이디를 클릭하면 no라는 팝업창이 뜨고 hit도 변하지 않는다. Fiddler로 no 알림창이 나올 때의 페이지를 확인해보니 vote_check라는 쿠키가 ok로 되어있는 것을 확인할 수 있었다. EditThisCookie로도 vote_check 쿠키를 확인할 수 있다. vote_check 쿠키를 삭제한 후 다시 내 아이디를 클릭하니 hit가 증가했고, vote_check 쿠키도 다시 생성됐다. 이러한 과정을 몇 번 반..
-
[Webhacking.kr] Challenge 27 풀이Wargame/Webhacking.kr 2019. 5. 12. 02:09
27번 문제는 SQL Injection 문제이다. 개발자도구로 소스를 확인해보면, index.phps를 확인해보라고 나와있으므로 index.phps로 접속해본다. index.phps로 접속하면 Challenge 27의 소스가 나온다. Challenge 27 페이지가 GET 방식으로 정수형 변수인 no의 값을 입력받고, 이때 eregi 함수를 통해 #, union, from, challenge, select, (, \t, /, limit, =, 0x를 no 값에서 필터링한다. 그 다음 쿼리문을 날려 id의 값이 guest면 guest 문구를 출력하고 admin이면 solve를 실행한다. (※ no=($_GET[no])에서 괄호( )를 통해 no가 정수형 변수임을 알 수 있다.) 쿼리문 $q는 id가 gue..