목록전체 글 (421)
외로운 Nova의 작업실
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEwdnZ/btrZLToaDfA/wkna8hdYQOvwlyDfQ6TFdk/img.png)
- IBinder 객체 바인딩 앞 장에서 살펴본것 처럼 서비스를 실행하는 함수를 2개 제공하는 이유는 서비스를 이용하는 상황을 2가지로 구분하기 위해서입니다. 다음 그림처럼 액티비티에서 startService()함수로 서비스를 실행했다고 가정해봅시다. 이처럼 백그라운드 작업은 필요하지만 액티비티와 데이터를 주고받을 일이없는 등 서로 관련이 없다면 startService()함수로 서비스를 실행하면 됩니다. 그런데 어떤 경우에는 서비스와 액티비티가 상호작용 해야할때가 있습니다. bindeService()는 이러한 목적으로 호출하는 함수입니다. - 실습 메인 액티비티.xml에 service라는 텍스트뷰를두고 원래는 service return 이라는 문자열이 이였다가 서비스쪽에 의해 문자열이 바뀌는 코드를 짜보..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bLbAEf/btrZYRokt6r/0iZBs7YdWQhAULZUZcrF01/img.png)
- 문제 A. 공격자가 웹페이지 소스코드를 유출한 시간(UTC+09:00)은? B. 리버스쉘(Reverse Shell)을 동작시키는 프로세스 ID(PID)는? (10진수) C. 리버스쉘(Reverse Shell)에 대한 공격자 주소(IP)는? - 문제 풀이 먼저 리버스쉘을 실행시켰고, 프로세스 ID를 물어보기때문에 프로세스가 실행시킨 CMD 명령어들을 기록해놓은 ps_eaf 파일먼저 봐보겠습니다. process>ps_eaf 경로에 있습니다. sh 명령어와 php 명령어로 reverce.php를 실행시킨 기록이 있습니다. user의 계정은 www-data이고, 이 계정이 실행시킨 응용프로그램중 PID값이 5245인 프로그램이 직접 php 명령어로 reverse.php 파일을 실행시키는 것을 확인할 수 있습..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ItNfH/btrZKx5YcAs/N6QHRlLKCNAumMXiWwDcL0/img.png)
- 문제인식 세션값을 알아내서 admin 계정으로 로그인 해야하는 것 같습니다. 서버 코드를 봐보겠습니다. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } session_storage = { } @app.route('/') def index(): session_id = request.cookie..