일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 명령어
- 쿼리최적화
- 리눅스공부
- TDD
- EC2
- 쿼리
- 서버
- 오라클
- 데이터베이스프로그래밍
- DB
- 개발방법론
- 개발자
- dbms
- sql
- jdbc programming
- 개발공부
- 리눅스
- 클라우드
- 컴퓨터
- 자바
- 트랜잭션
- CS
- 데브옵스
- 클라우드네이티브
- Database
- JDBC
- 공부
- 데이터베이스
- AWS
- 시스템프로그래밍
- Today
- Total
목록해킹 및 보안/Suninatas (6)
개발 블로그
로그인 창이 하나가 있다. 소스 코드를 보면 아래와 같은 힌트가 있다. 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를 획득할 수 있다.
1번 문제는 크게 어렵지 않은 문제이다. 화면에 위와 같은 코드가 나와있다. 입력한 result는 위와 같은 변화를 겪고 만약 result가 admin이라면 key값을 얻을 수 있다. result가 admin이려면 result1=ad, result2=min 이어야 한다. 따라서 result의 2번 자리가 a이고 3번 자리가 d 4번자리가 m, 5번 i, 6번 n이어야 한다. a를 입력하면 aad로 바뀌고 i를 입력하면 in으로 바뀌기 때문에 ami만 입력해도 result는 aadmin으로 바뀐다. 이 값을 넣고 check 버튼을 누르면 Authkey를 얻을 수 있다.