| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- follina
- 자바입문
- suninatas
- artifact
- CTF
- 포렌식
- 혼자공부하는자바
- baekjoon online judge
- picoCTF
- 버프스위트
- 와이어샤크
- 문제풀이
- 3wayhandshaking
- Forensic
- pico
- 안드로이드리버싱
- 앱
- ReverseEngineering
- 컴공
- 자바복습
- 소프트스퀘어드
- 아티팩트
- Burpsuite
- KaliLinux
- 볼라틸리티
- 메모리포렌식
- 포트스캔
- 9012
- 백준
- 칼리리눅스
- Today
- Total
목록분류 전체보기 (121)
컴퓨터공학 전공생의 보안 도전기✌
문제 풀이 우선 위의 로직게임을 그냥 풀어주었다. 5*5 사이즈의 간단한 네모로직 게임이다. 위와 같이 클릭해 칸을 색칠한 후, solved 버튼을 누르면 아래와 같이 쿼리를 보낼 수 있는 폼이 뜬다. 아무 이름이나 입력을 해보면 아래와 같이 이름과 answer, ip 주소값의 로그가 남는다. name에다가 sql을 시도해보기도 했으나 answer값이 어떤 name이든 동일하며, 그 바이너리값을 변환해보아도 딱히 의미있는 문자열은 아니었다. 그래서 Burp Suite로 이 패킷을 가로채보았다. 그랬더니 이렇게 앞에서 풀었던 로직게임의 결과값이 바이너리값처럼 생성되어 answer 변수로 id와 함께 넘어가고 있었다. 그래서 이번에는 answer 변수쪽에 sql을 시도해보았다. 단순 or 1=1은 query..
https://cafe.naver.com/secufact/280
문제 문제에 들어가 보니 사진처럼 wrong 이라는 글씨와 함께 view-source 라는 하이퍼링크가 친절하게 달려 있었다. 풀이 view-source 를 눌러 소스코드를 살펴보았다. 소스 코드 내부를 살펴보면 'pat'이라는 변수를 GET으로 받아들이는 'val'이라는 값과 비교하여 맞으면 solve되는 형식이었다. 그렇다면 pat 변수는 어떻게 정의되어 있는지 보자. pat은 정규표현식으로 형식이 지정되어있었다. 하나하나 뜯어보면, 아래 표와 같다. [1-3], [a-f] 대괄호 안의 범위 중 한 가지 값 (1~3, a~f) {5} 바로 이전 값을 중괄호 안의 숫자만큼 반복 _ 언더바 (_) .x x는 임의의 한 문자 (개행문자 제외) x* x를 0번 이상 반복 \t 탭 (url encoding 필..
문제 문제를 들어가보자 이런 페이지가 떴다. 여기저기 이동해보니, 회색 블록의 o에 마우스를 올리자 y0u라고 변하는 것을 확인할 수 있었다. 풀이 우선 소스코드를 열어보았다. 회색 블록을 정의하고 있는 소스코드를 보면, 글씨를 감싸고 있는 를 클릭할 때마다 style.left을 1px씩 증가시키고 있었다. 그러다가 1600px에 위치하게 되면 정답이 있는 페이지로 넘어가는 것 같았다. 그래서 저 if문을 그냥 없애 조건없이 정답이 있는 페이지로 넘어가는 코드가 실행되게끔 해보았다. 그랬더니 no hack 이라는 글씨가 나타나고 이 방법이 정답이 아니라는 것을 알 수 있었다. 조건문을 꼭 남겨두어야 하는 것 같아서 그냥 if문의 코드를 비교(==)가 아닌, 대입(=)으로 바꾸어 주었다. 그랬더니 아래와 ..
33번 문제는 총 10가지의 딸림 문제가 있다. 하지만 그리 복잡한 문제는 없기 때문에, 하나하나씩 풀어보겠다! 33-1. get method. get이라는 이름의 파라미터로 hehe라는 값을 넣어주면 끝. ?get=hehe 33-2. burpsuite를 이용해서 post로 method를 변경해준후에 post와 post2 파라미터값을 추가해주면 끝. 33-3. get method. myip 파라미터값이 내 ip주소이면 끝 33-4. get method. time() = 현재 시간값을 md5 해시값으로 변환하여 password 파라미터 값으로 넣어주면 끝 hint로는 현재 시간을 계속 출력해주는 중. 그래서 새로고침해보면 계속 변화중 미리 1분 정도 앞선 시간을 md5 해싱한 후, 이 값을 파라미터로 넣고..
문제 webshell을 업로드하고 flag를 출력하라는 문제이다. 아무래도 파일 업로드 취약점을 이용해야 하는 문제인 것으로 보인다. 풀이 우선 flag 파일을 실행해주는 php 파일을 작성했다. 그리고 이 파일을 업로드 해보았지만, php 확장자는 필터링되고 있었다. 우회 방법을 찾아야했다. NULL Injection, Hex 변조를 통한 우회 등등 여러 방법을 사용해보았으나 정상적으로 작동하지 않았다. 결국은 Burp Suite를 이용하여 content-type을 변경해주는 방식을 이용해보았다. Kali Linux에 접속하여 Burp Suite를 열었다. Burp Suite 이용과 관련해서는 나중에 따로 한 번 글을 포스팅해보도록 하였다. 위 그림은 파일을 업로드한 후 burp suite로 그 패킷을..
문제 풀이 test.txt 파일의 다운로드는 잘 되었으나, flag.docx 파일은 아래와 같은 alert가 떴다. 그래서 우선 문제 페이지의 소스코드를 살펴보았다. 그랬더니 test.txt은 링크가 잘 걸려있었지만, flag.docx는 그렇지 않은 것을 확인할 수 있었다. test.txt 파일 다운로드 경로를 보면, base 64로 encoding이 되어있는 것을 볼 수 있다. 혹시나 해서 이것을 decoding해보았다. 그랬더니 test.txt 파일명과 동일한 값이 나오는 것을 확인할 수 있었다. 즉 down 폴더에 파일명이 base64로 encoding된 값이 바로 다운로드 경로라고 추측해볼 수 있다. 그렇다면 flag.docx을 다운로드할 수 있는 경로도 같은 방식이 아닐까...?? flag.do..
SQL Injection SQL 쿼리문을 조작하여 서버의 데이터베이스의 데이터를 변조하거나 허가되지 않은 정보에 접근하는 공격. 주로 사용자 입력 데이터를 제대로 검증하지 못한 경우 발생. 공격기법 Error based SQL Injection 논리적 에러 이용 ex) ' or '1'='1 UNION based SQL Injection Union 명령어(두 개의 쿼리문에 대한 결과를 통합한 하나의 테이블) 이용 정상적인 쿼리문에 하나의 추가 쿼리를 삽입하여 정보 획득 조건 - Union 하는 두 테이블의 컬럼 수, 데이터 형이 동일해야만 가능! ex) 'UNION SELECT 1,1 -- Blind SQL Injection - Boolean based SQL 쿼리를 통해 나온 True, False의 정보..
CSRF(Cross Site Request Forgery) 이용자을 속여서 의도치 않은 요청에 동의하게 하는 공격. 임의 이용자의 권한으로 임의 주소에 request를 보낼 수 있는 것 조건 사용자가 보안이 취약한 서버로부터 이미 인증을 받은 상태여야 함 쿠키 기반으로 서버 세션 정보를 획득할 수 있어야 함 공격자는 서버를 공격하기 위한 요청 방법에 대해 미리 파악할 수 있어야 함 공격방법 공격자는 서버에 인증된 브라우저의 사용자가 악성 스크립트가 포함된 페이지를 누르도록 유도(게시글, 메일 등) 사용자가 악성 스크립트가 포함된 페이지에 접근 시, 쿠키에 저장된 세션 ID가 서버로 요청 서버는 이를 확인하여 인증된 사용자의 요청으로 판단하고 처리 get 방식 - , 등을 이용 post 방식 - , 등을 ..