분류 전체보기
-
보호되어 있는 글입니다.
리버싱 기초(EQST LMS)보호되어 있는 글입니다.
2022.12.30 -
개요 컨테이너가 대중화되기 시작한 시점에서 가장 크리티컬했으며 컨테이너 탈출의 시작을 알린 취약점은 CVE-2019-5736 이라고 할 수 있다. 해당 취약점을 재현해보고 컨테이너의 기반 기술인 runC에 존재하는 취약점을 악용하여 컨테이너를 탈출해보자. runC란? runC는 container의 생성/실행 등을 위한 기본적인 CLI 도구이며 Docker, containerd, Podman 및 CRI-O가있는 컨테이너의 저수준 컨테이너 런타임으로 사용된다. [저수준(Low-level) 컨테이너 런타임 OCI Runtime으로 부르기도 하는 Low Level Container Runtime은 오로지 컨테이너를 실행하는 기능만 제공한다 컨테이너는 linux namespace와 cgroups를 통해 구현된다...
[컨테이너 보안] 2-2장. 컨테이너 탈출 (CVE-2019-5736)개요 컨테이너가 대중화되기 시작한 시점에서 가장 크리티컬했으며 컨테이너 탈출의 시작을 알린 취약점은 CVE-2019-5736 이라고 할 수 있다. 해당 취약점을 재현해보고 컨테이너의 기반 기술인 runC에 존재하는 취약점을 악용하여 컨테이너를 탈출해보자. runC란? runC는 container의 생성/실행 등을 위한 기본적인 CLI 도구이며 Docker, containerd, Podman 및 CRI-O가있는 컨테이너의 저수준 컨테이너 런타임으로 사용된다. [저수준(Low-level) 컨테이너 런타임 OCI Runtime으로 부르기도 하는 Low Level Container Runtime은 오로지 컨테이너를 실행하는 기능만 제공한다 컨테이너는 linux namespace와 cgroups를 통해 구현된다...
2022.12.27 -
코드 분석 사진과 같이 Button의 값은 여러 파일을 통해 알아낼 수 있다. res/layout/activity_main.xml에서 정의된 android:text의 값을 confirm으로 변경해야 목표에 도달할 수 있다. Write Up Java.perform(() => { console.log("\n* Hooking Start *") var challenge08 = () => { Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: (instance) => { var R_id = Java.use('uk.rossmarks.fridalab.R$id') var string = Java.use('java.lang.String') var button = ..
FridaLab Write Up - Challenge 08. 'Check' 버튼의 텍스트를 'Confirm'으로 변경하라.코드 분석 사진과 같이 Button의 값은 여러 파일을 통해 알아낼 수 있다. res/layout/activity_main.xml에서 정의된 android:text의 값을 confirm으로 변경해야 목표에 도달할 수 있다. Write Up Java.perform(() => { console.log("\n* Hooking Start *") var challenge08 = () => { Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: (instance) => { var R_id = Java.use('uk.rossmarks.fridalab.R$id') var string = Java.use('java.lang.String') var button = ..
2022.12.15 -
코드 분석 MainActivity에서 challenge_07.setChall07()을 호출하여 chall07에 랜덤한 값을 삽입 후 challenge_07.check07Pin()에서 검증을 수행한다. 반복문을 돌리기 위해 chall07 변수에 삽입될 값의 범위를 한번 알아보겠다. Math.random() * 9000이므로, 0 ~ 8999까지의 범위를 가진다. 하지만 뒤에 1000이 더해져서 최소 범위는 1000부터 시작이 된다. 즉, chall07의 값 범위는 1000 ~ 8999이다. 문제의 목표는 무차별 대입 공격을 수행하여 검증을 통과하라고 하였으니, MainActivity.chall07()의 파라미터에 반복문을 이용하여 값을 넣어서 검증을 통과하면 될 것이다. Write Up Java.perfo..
FridaLab Write Up - Challenge 07. check07Pin()의 chall07 변수 검증을 무차별 대입 공격을 통해 통과하라.코드 분석 MainActivity에서 challenge_07.setChall07()을 호출하여 chall07에 랜덤한 값을 삽입 후 challenge_07.check07Pin()에서 검증을 수행한다. 반복문을 돌리기 위해 chall07 변수에 삽입될 값의 범위를 한번 알아보겠다. Math.random() * 9000이므로, 0 ~ 8999까지의 범위를 가진다. 하지만 뒤에 1000이 더해져서 최소 범위는 1000부터 시작이 된다. 즉, chall07의 값 범위는 1000 ~ 8999이다. 문제의 목표는 무차별 대입 공격을 수행하여 검증을 통과하라고 하였으니, MainActivity.chall07()의 파라미터에 반복문을 이용하여 값을 넣어서 검증을 통과하면 될 것이다. Write Up Java.perfo..
2022.12.15 -
코드 분석 MainActivity에서 Challenge_06 클래스의 메소드들을 사용되는 것을 확인할 수 있다. 최종적으로 challenge_06 클래스의 confirmChall06 메소드를 사용하여 True를 반환 받는 것이 목표이다. 일단 confirmChall06 메소드에서 True를 받기 위해서 사진과 같은 조건을 만족해야한다. 두 번째 조건인 현재 시간이 challenge_06.startTime()이 호출된 시간보다 10초 더 크면 되는 것이니, challenge_06.startTime() 호출 후 10초 뒤에 challenge_06.confirmChall06()을 호출하면 해결된다. 첫 번째 조건은 challenge_06.addChall06()의 chall06 변수에 삽입된 값을 그대로 cha..
FridaLab Write Up - challenge 06. 적절한 값을 사용하여 10초 후 chall06()를 동작시켜라.코드 분석 MainActivity에서 Challenge_06 클래스의 메소드들을 사용되는 것을 확인할 수 있다. 최종적으로 challenge_06 클래스의 confirmChall06 메소드를 사용하여 True를 반환 받는 것이 목표이다. 일단 confirmChall06 메소드에서 True를 받기 위해서 사진과 같은 조건을 만족해야한다. 두 번째 조건인 현재 시간이 challenge_06.startTime()이 호출된 시간보다 10초 더 크면 되는 것이니, challenge_06.startTime() 호출 후 10초 뒤에 challenge_06.confirmChall06()을 호출하면 해결된다. 첫 번째 조건은 challenge_06.addChall06()의 chall06 변수에 삽입된 값을 그대로 cha..
2022.12.15 -
코드 분석 MainActivity에서 CHECK 버튼 클릭 시 chall05()를 호출하는 것을 확인할 수 있다. 하지만, 호출 시 파라미터 값으로 문자열 "notfrida!"을 넘김으로 completeArr의 4번째 인덱스 값이 0으로 지정된다. Write Up Java.perform(() => { console.log("\n* Hooking Start *") var challenge05 = () => { var MainActivity = Java.use("uk.rossmarks.fridalab.MainActivity") MainActivity.chall05.overload('java.lang.String').implementation = function (arg) { this.chall05("frid..
FridaLab Write Up - Challenge 05. 항상 chall05()에 "frida"를 전송하라.코드 분석 MainActivity에서 CHECK 버튼 클릭 시 chall05()를 호출하는 것을 확인할 수 있다. 하지만, 호출 시 파라미터 값으로 문자열 "notfrida!"을 넘김으로 completeArr의 4번째 인덱스 값이 0으로 지정된다. Write Up Java.perform(() => { console.log("\n* Hooking Start *") var challenge05 = () => { var MainActivity = Java.use("uk.rossmarks.fridalab.MainActivity") MainActivity.chall05.overload('java.lang.String').implementation = function (arg) { this.chall05("frid..
2022.12.15