[AndroGoat]-Input_Validations

김치찜·2026년 9월 11일

android

목록 보기
5/12
post-thumbnail

1. XSS

문제 분석 및 익스플로잇

document.write(a.value);

사용자가 입력한 값이 HTML로 해석되면서 공격자가 임의의 태그나 JavaScript 코드를 삽입 가능

webSettings.setJavaScriptEnabled(true);

가 설정되어 있기 때문에 HTML Injection에서 끝나는 것이 아니라 JavaScript 실행까지 이어질 수 있음

#페이로드
<script>javascript:alert(1)</script>

기본적인 <script>alert(1)</script>는 실행되지 않고 해당 페이로드가 실행되는 것을 확인했는데 여기서 javascript:가 js 문법상 label로 해석될 수 있으며 이는 Android Webview에서 document.write()로 동적으로 HTML을 삽입하는 과정의 파싱 및 실행 동작 차이로 확인했다.

2. SQLI

문제 분석 및 익스플로잇

문제속 핵심은 다음과 같다

String qry = "SELECT * FROM users WHERE username='" + ((Object) $username.getText()) + "'";

jadx로 역컴파일 하여 확인한 것이므로 (Object)를 제외하고 본다면

SELECT * FROM users WHERE username='(입력값)'

이런식으로 전달될 것이므로 이스케이프하여 페이로드를 작성

# 페이로드
'or 1=1 --

3. WebView

문제 분석 및 익스플로잇

# js 실행 허용
webViewSettings.setJavaScriptEnabled(true);

# file://을 통한 파일 접근 허용
webViewSettings.setAllowFileAccess(true);

# content:// 접근 허용
webViewSettings.setAllowContentAccess(true);

# file:// 페이지의 js가 다른 file:// `리소스`에 접근 허용
webViewSettings.setAllowFileAccessFromFileURLs(true);

# file:// 페이지의 js에 다른 origin 접근 허용
webViewSettings.setAllowUniversalAccessFromFileURLs(true);

setAllowUniversalAccessFromFileURLs(true) 설정으로 인해 file:// origin에서 실행되는 JavaScript의 접근 범위가 확대된다.

문제 코드 속 다음 설정들이 존재하기 때문에 맞춰서 페이로드를 작성해준다.

profile
I can't melt an IGLOO

0개의 댓글