일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 파이썬
- InsecureBank
- Openstack
- CTF-d
- 인시큐어뱅크
- elasticsearch
- MFT
- Reflected XSS
- Volatility
- ESXi
- frida
- NTFS
- 2018
- vulnhub
- lord of sql injection
- igoat
- 안드로이드
- ctf
- Strings
- logstash
- XSS
- foremost
- SQL Injection
- beebox
- Suninatas
- base64
- otter
- Docker
- kibana
- diva
- Today
- Total
목록Suninatas (30)
Information Security
7번 문제 화면이다. 그림 1-2처럼 중간에 YES 버튼이 있는 것을 확인할 수 있다. 그림 1-3처럼 Yes 버튼 클릭 시 "Fail.. Your too slow" 문구를 보여준다. 그림 1-4처럼 소스코드에서 힌트를 보면 Faster and Faster 확인할 수 있다. 그림 1-5처럼 구글 개발자도구를 이용해 http://www.suninatas.com/challenge/web07/web07.asp 브라우저에 입력하고 콘솔에 에 document.frm.submit() 이라는 스크립트를 실행시키면 Yes 버튼과 같은 효과를 낼 수 있다.
그림 1-1을 보면 Key 값을 Chek 하면 풀리는 것 같다. 그림 1-2처럼 소스코드 내용을 보면 eval() 함수를 통해 packer라는 자바스크립트 난독화 되어 있는 것을 알 수 있다. Hint 12342046413275659 힌트를 확인할 수 있다. 그림 1-3처럼 packer 난독화를 해독을 하면 코드 내용을 확인할 수 있다. (PACKER 난독화 : https://beautifier.io/) 구글 개발자 도구를 이용해 Hint 12342046413275659 값을 PASS 변수에 집어넣어 9c43c20c 값을 획득했다. 그림 1-5처럼 9c43c20c 값을 넣었더니 Authkey 값을 확인할 수 있다.
그림 1-1처럼 User-Agent 정보를 보여주고 있다. Plus 버튼을 클릭 시 포인트의 값이 1씩 증가하는 것을 알 수 있다. 소스코드의 내용을 확인해보니 50 point 값과 SuNiNaTaS라는 힌트를 확인할 수 있다. 계속 클릭을 시도해 포인트 값을 25까지 만들었다. 그림 1-4처럼 포인트 값을 25로 만들었더니 "I like the SuNiNaTas brower!"라는 경고창을 확인할 수 있다. 그림 1-4처럼 User-Agent 값을 SuNiNaTaS로 변경 후 포인트 값을 50까지 만들었다. 그림 1-6처럼 Auth key 값을 확인할 수 있다.
그림 1-1처럼 3번 문제를 보면 "Write articles in Notice Board!"라는 문구만 표시되어 있다. 그림 1-2처럼 FREE WRITE 게시판에 URL을 보면 /board/free/write를 확인할 수 있다. 그림 1-1을 보면 notice 게시판에 글을 쓰라고 해서 그림 1-3처럼 URL 주소에 board 대신에 notice로 변경 후 NOTICE 게시판이 나온 것을 알 수 있다. 그림 1-4처럼 NOTICE 게시판에 글을 등록했다. NOTICE 게시판에 게시글을 등록하면 키 값을 확인할 수 있다.
그림 1-1을 보면 로그인 화면이 보입니다. ID/PW 입력하여 성공하면 Authkey를 보여주는 것 같습니다. 그림 1-2 test/1234 입력한 결과 "You can't join! Try again 경고창을 보여주는 것을 알 수 있다. 그림 1-3을 보면 문제 2번에 대한 소스코드이다. 부분을 보시면 chk_form() 함수를 이용하여 id값과 pw값을 불러와 비교를 하는 것을 알 수 있다. id==pw 값이 같으면 alert("You can't join! Try again"); 메시지를 보여주고 id/pw 값을 초기화를 하는 것을 알 수 있다. id/pw 값이 다르면 submit() 함수가 실행되는 것을 알 수 있다. 그런데 Hint를 보면 Join / id=pw 값이 같아야 한다는 것을 알 수 ..
그림 1-1을 보면 Replace() 함수와 Mid() 함수를 알면 풀 수 있는 문제인 것 같다. Replace() 함수 함수 Replace(문자열, 치환될 문자열, 치환할 문자열) 예시 result = Replace("hello", "e", "a") print (result) 결과 : hallo Mid() 함수 함수 Mid(문자열, 시작 위치, 자리수) 예시 result = Mid("abcd123", "2", "4") print (result) 결과 : bcd1 문제의 코드에서는 Replace() 함수 두 개를 이용하여, 입력받은 문자열에서 문자'a'와 문자'i'에 대해 치환 후 Mid() 함수를 이용하여 2~9번째 글자를 추출해 내는 코드가 작성되어 결과 값이 'admin'일 경우에, pw를 반환한다..