일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
- sql
- Database
- 쿼리최적화
- 개발자
- 오라클
- 자바
- 데이터베이스프로그래밍
- 쿼리
- 트랜잭션
- 리눅스공부
- AWS
- 시스템프로그래밍
- DB
- TDD
- dbms
- CS
- 개발방법론
- EC2
- JDBC
- 서버
- 공부
- 클라우드네이티브
- 데이터베이스
- 클라우드
- 데브옵스
- 리눅스
- 명령어
- jdbc programming
- 컴퓨터
- 개발공부
- Today
- Total
목록해킹 및 보안 (16)
개발 블로그
교내 보안 동아리 활동으로 2학기~겨울방학까지 리버싱 스터디를 진행하였습니다.벌써 어지럽지만 리버싱 개념을 잡고 어셈블리부터 차근차근 공부하기로리버싱 입문 chapter01 읽고 정리한 내용입니다 리버싱 엔지니어링(Reverse Engineering)소프트웨어 공학의 한 분야로, 이미 만들어진 시스템을 역으로 추척하여 시스템의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 처음의 문서나 설계 기법 등의 자료를 얻어내는 것, 역공학이라고도 함 *필요한 지식: 레지스터, 메모리, 스택, 어셈블러, PE 구조, 디버깅 등 정적 분석(static analysis)- 파일을 실행하지 않고, 파일을 관찰하여 분석하는 방법- 주로 악성코드와 같이 실행하면서 분석하기 어려운 시스템을 정적 분..
로그인 창이 하나가 있다. 소스 코드를 보면 아래와 같은 힌트가 있다. admin으로 로그인하고 Password의 범위는 0~9999인가보다. 개발자 도구의 네트워크 창으로 확인해보니 요청 메소드가 POST이다. 이를 이용하여 파이썬 코드를 짤 수 있다. import requests session1 = requests.Session() for i in range(100000): data = {"id": "admin", "pw": i} req = session1.post("http://suninatas.com/challenge/web08/web08.asp", data=data) if (req.text.find("Password Incorrect!") == -1 ) : print(i) exit (0) els..
아무 값이나 쓰고 Check 버튼을 눌러봤지만 아무 일도 일어나지 않는다. 개발자 도구로 코드를 보았더니 script 부분이 아래와 같이 복잡했다. 난독화가 되어있는 것 같다. *자바스크립트는 클라이언트 측에서 실행되는 언어이기 때문에 클라이언트가 해당 스크립트를 볼 수 있다. 이를 방지하기 위해 난독화를 실행한다. 난독화 방법은 다양함 packing이 되어있으므로 unpacking 해주는 사이트를 통해 난독화된 코드를 원래 코드로 바꿔줄 수 있다. var digitArray = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); function PASS(n) { var result = ''; ..
화면은 위와 같다. 포인트가 있고 Plus 버튼을 누르면 포인트가 올라간다. User-Agent 정보가 써있다. *User-Agent: HTTP 요청을 보내는 디바이스와 브라우저 등 사용자 소프트웨어의 식별 정보를 담고 있는 request header의 한 종류 소스코드를 보면 힌트가 있다. point를 50까지 올리기 위해 Plus를 계속 누르면 25에서 더 이상 올라가지 않고 아래와 같은 경고창이 뜬다. SuNiNaTaS 브라우저가 좋다...User-Agent를 변경하라는 것 같다. 현재 User-agent는 chrome으로 설정되어있기 때문에 개발자도구>도구 더보기>네트워크 조건 에서 사용자 에이전트를 SuNiNaTaS로 바꿔주고 Plus를 누르면 point가 초기화 되지만 25 이상으로 올라가는 ..
검은 화면에 Write articles in Notice Board!라는 문구가 떠있다. 메인 화면으로 돌아가 Notice 페이지로 이동해보았다. 하지만 글을 작성하는 버튼은 찾을 수 없었다. 반면 free 페이지에는 wrie 버튼이 있고 누르면 글을 작성할 수 있는 페이지가 나온다. 이처럼 notice/write로 가면 글을 쓸 수 있는 페이지가 나오지 않을까 url에 입력해 보았다. 그랬더니 위와 같이 notice write 페이지가 나왔고 아무 글이나 작성해서 제출하면 alert창으로 Authkey를 획득할 수 있다.
화면에 아이디와 패스워드를 입력하는 창이 뜬다. 아무거나 입력하면 아무 일도 발생하지 않는다. 개발자 모드(F12)로 소스코드를 확인해 보았다. 스크립트 부분에 아래와 같은 chk_form() 함수가 있었다. id와 pw가 같으면 풀리는 문제인 것 같다. 하지만 id와 pw 폼에 같은 값을 입력한 후 제출하면 경고창이 뜨고 폼이 초기화된다. 하지만 else 부분을 보면 document.web02.submit();이라고 쓰여 있다. 콘솔로 이것을 직접 입력해주면 id와 pw에 같은 값이 들어있어도 우회할 수 있다. id와 pw에 같은 값을 넣어준 후 콘솔에 document.web02.submit()을 입력하면 Authkey를 획득할 수 있다.