본문 바로가기

전체 글81

injured.apk | FLAG FOUR - LOGIN 2 FlagFourActivity의 submitFlag함수를 확인하면 60번 라인에서 obj 문자열에 입력받은 값을 저장하고, 61번 라인에서 g.a() 메서드의 값을 a2라는 byte 배열에 할당한다. g클래스의 a 함수는 아래와 같다. 여기서 base64로 체크된 문자열을 디코딩하고 f1911a로 반환해준다. 첫번째 사진의 62번 라인에서는 a2에 값이 들어왔는지 확인해주고, 63번 라인에서 if문을 통해 입력한 값이 디코딩된 값과 일치하는지를 비교한다. NF9vdmVyZG9uZV9vbWVsZXRz 값을 디코딩해주면 다음과 같이 flag가 나타나는 것을 확인할 수 있다. 2021. 9. 13.
injured.apk | FLAG THREE - RESOURCES 1번과 마찬가지로 FlagThreeActivity 파일을 열어보면 다음과 같이 플래그가 들어가있는 자리에 cmVzb3VyY2VzX3lv 값이 들어있다. 62번 라인에서는 문자열 비교함수를 통해 우리가 입력한 값과 리소스로부터 받은 문자열을 비교한다. R.string.으로 cmVzb3VyY2VzX3lv를 참조한다. APK Easy Tool로 디컴파일 한 파일들을 전체 검색기능을 통해 문자열 검사로 플래그를 찾을 수 있다. 2021. 9. 13.
injured.apk | FLAG TWO - EXPORTED ACTIVITY 2번은 첫 화면에서 우회하여 다른 화면을 불러올 수 있다고 알려준다. 147번 라인을 보면 Manifest에서 exported 값이 true로 설정되어있는 것을 볼 수 있다. 인텐트를 허용하면 다른 곳에서 이 활동을 호출할 수 있다. 보통 false로 기본값 설정이 되어있지만, 외부에서의 접근을 허용할 때 true로 설정해준다. exported가 허용되어있기 때문에 adb로 am 명령어를 사용하여 패키지명과 b25lActivity를 입력하면 외부에서 activity 관리자로 접근하여 실행시킬 수 있다. 명령어를 통해 접근할 수 있으므로 인가된 허용자만 접근이 가능한게 아니라는 것이 노출되었기 때문에 취약점이라고 판단한다. 위와 같이 입력하면 flag가 나타난다. 2021. 9. 13.
injured.apk | FLAG ONE-LOGIN AndroidManifest에서 1번 문제의 코드가 적혀있는 FlagOneLoginActivity 파일을 확인해본다. onCreate 함수가 실행된 후, submitFlag 함수가 실행된다. 60~61번 라인에서 editText 변수에 우리가 입력하는 값을 받아오는데, 62번 라인에서 if문을 통해 해당 값이 만약 "F1ag_0n3"이라면 FlagOneSuccess 함수를 실행시켜 intent 변수에 저장한다. 66번 라인에서 intent에 저장된 해당 값이 화면에 나타나게 된다. 2021. 9. 13.
injured.apk | XSS 다음과 같이 태그를 입력할 경우 자바스크립트가 실행되는 것을 확인할 수 있다. XSS가 실행되는 부분의 코드를 확인하기 위해 XSSTextActivity 파일을 열어봤다. 19번 라인에 인자가 두 개가 들어간다. 뒷 인자가 해당 함수를 통해 문자열로 전달된다. DisplayPostXSS 파일을 확인해보면 17번 라인의 아이디 값과 XSSTextActivity 파일의 19번 라인 아이디 값이 같다. stringExtra 변수에 해당 값을 불러온다. 20번 라인은 자바스크립트를 허용하는 함수이다. 해당 값이 true로 설정되어있고, apk 내에서 내가 입력한 스크립트가 문자열로 인식되어 자바스크립트가 동작하기 때문에 XSS가 실행된다. 2021. 9. 13.
injured.apk | smali 변조 안드로이드는 MainActivity의 onCreate 함수를 시작으로 동작한다. jadx를 사용하여 MainActivity를 확인하고, 원하는 값을 변조한다. 우선 AndroidManifest.xml 파일을 확인하면 메인으로 확인되는 코드가 있다. 위 박스에 적혀있는 MainActivity를 들어가보면 프로그램이 시작되는 onCreate 함수를 볼 수 있다. smali 코드 변조를 위해 apk easy tool로 디컴파일하고, smail/b3nac/apk명 폴더 속 MainActivity.smali 파일을 다음과 같이 수정한다. 사진 속 체크 된 내용을 수정 및 추가해줬다. ccit test 라는 문장이 출력되게 하는 smali 문법이다. .locals 0을 1로 바꿔준 이유는 레지스터를 사용하기 위함이.. 2021. 9. 13.
안드로이드(Nox) Burp 프록시 환경 구성 | Burp 인증서 ※ Frida가 PC와 모바일(에뮬레이터 - Nox 사용)에 동일 버전으로 설치되어있다는 전제 하에 진행된다. 1. Burp 인증서 설치 1.1. Burp Suite에서 다음과 같이 진행한다. Next 버튼을 누른 후 나타나는 Select file을 통해 인증서가 저장될 경로를 지정하여 파일 명을 위와 같이 확장자가 der인 이름으로 지정해준다. 1.2. OpenSSL을 이용하여 시스템 폴더에 형식 변환한다. http://slproweb.com/products/Win32OpenSSL.html 위 링크를 통해 OpenSSL을 다운로드한다. OpenSSL이 설치된 경로에서 bin 폴더 안에 인증서를 옮겨준다. 1.3. OpenSSL 명령어를 통해 pem 파일로 변환한다. openssl x509 -inform.. 2021. 9. 13.
파일 업로드 취약점 | 악성코드 배포 | 보안 방법 파일 업로드(File Upload) 취약점이란? 파일 업로드 기능이 존재하는 웹 사이트의 확장자 필터링이 미흡할 경우, 공격자가 악성 파일을 업로드하여 시스템을 장악할 수 있는 취약점이다. 악성 스크립트가 업로드 된 후, 서버 상에서 스크립트를 실행하여 쉘을 획득하는 등의 행위로 시스템 권한을 획득하거나 서버를 변조시키는 등의 방법으로 웹 서버를 장악한다. 이 취약점으로 접근 권한 상승, 정보 유출, 악성코드 배포 등의 공격이 발생할 수 있다. 쉘: 사용자에게 받은 지시를 하드웨어 지식으로 변경하여 운영체제의 커널과 유저를 이어 준다. 웹 쉘: 웹 사이트를 통해 쉘을 여는 공격으로, 이 쉘을 통해 서버에 명령어를 수행하는 파일 업로드 취약점으로 많이 사용된다. 웹 서비스 구동 방법 Client : 웹 사.. 2021. 8. 9.
CSRF | XSS와 CSRF 차이점 | 보안 방법 CSRF 란? CSRF는 사이트 간 요청 위조라는 뜻으로, 사용자의 의지와 무관하게 웹 사이트에 요청을 보낼 수 있다. 공격자가 클라이언트에게 form이 담긴 html 코드를 보내면, 클라이언트는 해당 페이지로 연결되어 코드가 실행된다. 해당 form에는 악성 스크립트가 담겨있어, 자동으로 스크립트 값을 넘기게 되어 방문자가 원치 않는 동작을 하게 된다. 실습(burp suite 사용) 1. 기존의 로그인 정보는 아이디가 lyk00331이다. 2. 다음과 같은 코드를 동작시킴으로써, 다른 아이디인 csrf-lyk00331로 로그인할 수 있게 했다. value에는 기존 아이디인 lyk00331의 패스워드를 적어준다. 3. 확인해보면 csrf-lyk00331로 로그인된 것을 알 수 있다. XSS와 CSRF .. 2021. 8. 9.
XSS | 필터링 우회 | 보안 방법 XSS 이란? 웹 사이트 관리자가 아닌 사용자가 웹 페이지에 악성 스크립트를 삽입함으로써 개발자가 고려하지 않은 기능이 작동하여 발생하는 취약점이다. 클라이언트를 대상으로 사용자 세션을 가로채거나, 홈페이지 변조, 악의적인 사이트 이동 등의 공격을 수행할 수 있다. 종류는 Dom Based XSS, Stored XSS, Reflected XSS로 나뉜다. Stored XSS 저장형 XSS이다. 웹 서버에 스크립트를 저장하여 데이터베이스에 기록된다. 공격자가 미리 XSS 공격에 취약한 웹 사이트를 탐색하고 XSS 공격을 위한 스크립트를 포함한 게시글을 업로드함으로써 발생한다. 게시글의 URL을 클라이언트에게 노출하고 클라이언트가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송하게 된다. 웹 서버에서.. 2021. 8. 9.
PHP Mysql 게시판 만들기 - 1 DB설정 (내가 지정한 DB명은 20210318, table명은 board 이다.) idx에 AUTO_INCREMENT를 준 이유는 자동으로 번호를 증가시키기 위함이다. index.php 코드이다. 보통 메인 페이지를 index.php 혹은 index.html로 설정하는데, 나중에 로그인/회원가입 구현 페이지도 작성할 것이라면 해당 페이지는 main.php 정도로 작성해주는게 편하다. (로그인 페이지를 index.php로 구현하기 때문) 자유 게시판 No. 제목 작성자 작성일 //위에서 담아둔 result 값을 row배열에 넣는다. //나중에 작성할 view.php는 각각의 게시글의 번호를 받아와서 디테일을 보여주는 페이지다. 배열에 담은 페이지넘버(idx)로 연결할 수 있는 태그를 작성해준다. //게시.. 2021. 3. 25.
소켓 프로그래밍 보호되어 있는 글 입니다. 2021. 3. 22.