일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2018
- Openstack
- Suninatas
- frida
- foremost
- Volatility
- MFT
- 인시큐어뱅크
- InsecureBank
- elasticsearch
- Strings
- SQL Injection
- ctf
- beebox
- kibana
- otter
- ESXi
- lord of sql injection
- diva
- 파이썬
- 안드로이드
- vulnhub
- logstash
- NTFS
- base64
- Docker
- XSS
- Reflected XSS
- CTF-d
- igoat
- Today
- Total
목록모바일 (84)
Information Security
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bh21Ax/btqQlKfdoat/qBoOPCNSBbXrOe1z6zoC61/img.png)
uk.rossmarks.fridalab.MainActivitiy 내부에 chall07() 메서드가 존재하며 내부에 if, else문이 있다. 어떤 메서드를 호출했을 때 값이 참이 되면 7번째 값을 1로 setting 하여 빨간색 글씨를 초록색으로 변화시킨다. (문제 chall07() 메소드에서 String 자료형을 받아온 것을 if문 내부에 있는 check07Pin() 메서드를 호출할 때 인자 값으로 주어지고 있다. 이 값을 true로 만들어 보자. [Ctrl] 버튼을 누른 상태에서 challenge_07을 클릭하면, 해당 클래스로 이동할 수 있다. 클래스 내부에 check07Pin()이 동작한다. 인수로 받아온 String 값이 chall07과 같으면 true를 반환한다. chall07 값은 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/baQ82h/btqD7GpQLq0/UGjYr0AnQsnO9Nzk2suMg1/img.png)
Navigation -> Text search에서 메소드를 찾았다. chall06() 메소드에 int 정수형 값을 주고 if문에서 true가 된다면 문제를 해결하는 형태를 갖고 있다. if문 내부의 challenge_06.confirmCahll06(i) 값이 true가 되어야 한다. confirmChall06(int i) 메소드를 보면 두 가지 조건을 충족해야 true를 return 반환 할 수 있다. i == chall06, system.currentTimeMillis() > timeStart + 10000 -> 10초 지나야지만 참인 결과를 반환한다. 1. i == chall06 chall06 value 찾기, i == chall06 -> confirmchall06이 받고 있는 i 값을 chall06..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qeuSw/btqD2cpx9a3/V9v8dxlw7v76yvTL9ENcnK/img.png)
Challenge 05는 Challenge 04와 비슷하다. 04는 문자열을 한 번만 전송하면 되지만 05는 항상 전송해야 한다는 차이점이 존재한다. if문 안의 로직은 chall04()와 동일하다. 여기서는 else문이 추가되어 전송되지 안흥면 0으로 변경된다. 함수를 보면 한 번이라도 다르면 체크를 해제하고 있는 것을 알 수 있다. 실시간으로 [CHECK] 버튼을 클릭할 때마다 "frida" 문자열이 전달되어야 해결할 수 있다. uk.rossmarks.fridala.MainActivity 내부에 있는 chall05() 메소드를 재작성한다. this.chall05()를 사용하여 호출 시, 기준 chall05()가 가진 메소드의 행위를 수행할 수 있도록 해준다. 내부 로직은 기본 로직을 이용하고 인자 값..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cuvb0U/btqDY2TrvbU/9gRWwZS26GrrJEc29zrD11/img.png)
Chall04() 메소드에서 전달된 인수를 수정하는 문제를 풀기 위해 해당 함수의 위치를 Navigation -> Text search에서 메소드를 차는다. 해당 메소드는 인자 값으로 string을 받고 실제로 if문에서 "frida" 문자열과 str 인자 값이 같으면 활성화해주고 있다. chall04() 메소드를 호출하면서 인자 값으로 frida 값을 동일하게 넣어주면 해당 문제가 해결되는 것 같다. 자바스크립트 코드를 작성하기 전 chall04() 메소드를 호출할 때 Java.use를 사용해야 할지 Java.choose를 사용해야 할지 판단해야 한다. 해당 함수는 static이 없기 때문에 Java.choose를 사용해야 한다. 자바스크립트 코드를 실행하면 Sovled Challenge 04라는 문자..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c8GHY9/btqDWr6XHRF/34sCfjKbckrMJKvzBXFMJK/img.png)
Chall03() 메소드를 찾기 위해 Navigation -> Text Search에서 chall03()를 검색하면 uk.rossmarks.fridalab.MainActivity에 존재하는 것을 알 수 있다. 해당 함수는 현재 return 값이 false라는 것을 알 수 있다. 이 값을 true로 바꾸기 위해 자바스크립트 코드를 작성해야 한다. implementation을 작성하여 함수를 이용해 위의 코드가 동작하지 않고 재 작성한 코드가 동작하여 return 값으로 true 값이 반환될 것이다. 해당 스크립트 코드를 실행 후 Check 버튼을 클릭하면 Solved Challenge 03 문자열을 확인할 수 있다. FirdaLab 앱을 확인하면 3번 문제가 해결된 것을 알 수 있다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/HjoYW/btqDKVlU7w3/vqnafTckRxuV8MuQcX6UVK/img.png)
jadx 프로그램을 이용해 chall02() 메소드를 찾기 위해 [Navigation] - [Text search]를 클릭하여 문자를 검색하는 기능을 사용했다. uk.rossmarks.fridalab.MainActivity.chall02() 클래스 내부에 존재하는 메소드라는 것을 알 수 있다. completeArr[1]=1;에서 배열이 선언되어 있는 것을 알 수 있다. 추가할 메소드를 확인 후 statict 선언이 되어 있지 않아 static method가 아닌 instance method를 사용한다. instance method를 호출하기 위해서 반드시 인스턴스화 된 객체를 찾아서 사용해야 한다. 이 객체를 사용하려면 Java.use가 아닌 Java.choose라는 api 함수를 사용해야 한다. Jav..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/V2RL3/btqDJMvMcQE/5bNLoSV7s1ReeOQU9tWSRK/img.png)
클래스 내부의 소스코드를 보면 static int cahll01; 변수 값을 1로 지정해주어야 한다. 1로 변경이 되면 getChall01int() 메소드가 실행되면서 chall01이라는 값이 1로 return 되는 것 같다. Challenge_01 문제를 풀기 위해 작성한 자바스크립트 코드다. nox 프로그램에서 Frida를 실행시켰다. FridaLab 프로세스 패키지 이름을 확인했다. 자바스크립트 파일이 실행된 것을 알 수 있다. FridaLab에서 [CHECK]버튼을 클릭하게 되면 1번 문제가 초록색으로 변해 해결한 것을 알 수 있다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/7AAMb/btqzWZFXHPS/0ObXpdXPFuSzeh7ZtbK6UK/img.png)
런타임 조작 - 애플리케이션이 정상 구동될 경우 실행 흐름 조작 또는 정보 유출할 수 있는 취약점 위치 DamnVulnerableIOSApp 영향 변조된 어플리케이션을 통한 개인정보 유출 또는 사칭 애플리케이션, 스미싱 공격에 활용될 수 있다. 진단 아이디와 비밀번호를 입력했는데 Oops라는 문구가 떴다. 로그인 우회 할 수 있는 함수를 찾았다. 명령어를 이용해 로그인을 우회하기 위해 런타임 값을 변조했다. 로그인 우회를 성공한 것을 알 수 있다. 대응방안 인증서 체크 로직, 디버거 감지 로직을 추가한다.