HackChang

[Suninatas] 써니나타스 24번 문제 풀이 본문

W4RG4M3/SYST3M

[Suninatas] 써니나타스 24번 문제 풀이

HackChang 2020. 8. 7. 18:26

LEVEL24

이번 문제는 시스템 문제다.

해당 파일을 다운로드 받아서 압축을 풀어보도록 하겠다.

 

이런 파일이 나오게 되는데 HxD로 열어보도록 하겠다.

파일 시그니처를 검색해서 PK가 어떤 확장자의 파일인가 보도록 하겠다.

 

이렇게 압축파일인 것을 알았고, 해당 파일의 확장자를 .zip으로 변경 후 압축을 풀어보도록 하겠다.

 

저번에 풀었던 자바파일 문제와 비슷하다.

dex파일은 dex2jar이라는 툴로 jar로 만들 수 있다.

 

우선 dex2jar 파일이 설치된 경로로 이동한다.

 

dex2jar 다운로드

https://github.com/pxb1988/dex2jar

 

pxb1988/dex2jar

Tools to work with android .dex and java .class files - pxb1988/dex2jar

github.com

 

d2j-dex2jar 경로 를 입력해서 해당 dex파일을 jar파일로 만들어준다.

그리고 Java Decompiler를 통해 해당 jar 파일을 불러오면 이렇게 해당 jar 파일의 클래스들을 볼 수 있게 된다.

http://java-decompiler.github.io/#jd-gui-download

 

Java Decompiler

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reco

java-decompiler.github.io

 

이렇게 해당 jar파일 안의 클래스를 보다보면 클래스 안에서 아래와 같은 소스를 볼 수 있다.

 

public class MainActivity extends Activity
{
  public void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    setContentView(2131296284);
    ((Button)findViewById(2131165218)).setOnClickListener(new View.OnClickListener()
    {
      public void onClick(View paramView)
      {
        Object localObject1 = (EditText)MainActivity.this.findViewById(2131165258);
        Object localObject2 = (EditText)MainActivity.this.findViewById(2131165257);
        paramView = ((EditText)MainActivity.this.findViewById(2131165256)).getText();
        localObject1 = ((EditText)localObject1).getText();
        localObject2 = ((EditText)localObject2).getText();
        if (localObject2.toString().equals("https://www.youtube.com/channel/UCuPOkAy1x5eZhUda-aZXUlg"))
        {
          MainActivity localMainActivity = MainActivity.this;
          StringBuilder localStringBuilder = new StringBuilder();
          localStringBuilder.append("http://www.suninatas.com/challenge/web24/chk_key.asp?id=");
          localStringBuilder.append(paramView.toString());
          localStringBuilder.append("&pw=");
          localStringBuilder.append(localObject1.toString());
          localStringBuilder.append("&key=");
          localStringBuilder.append(localObject2.toString());
          localMainActivity.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(localStringBuilder.toString())));
          return;
        }

위의 클래스를 보면 localObject2(key)가 www.youtube.com/channel/UCuPOkAy1x5eZhUda-aZXUlg 와 같아야 하는 것을 알 수 있고, paramView(id)와 localObjcet1(pw)의 숫자 2131165256, 2131165258가 무엇을 나타내는지 R.class 파일에서 보도록 하겠다.

 

paramView(id) - 2131165256

localObjcet1(pw) - 2131165258

 

이렇게 보면 아이디와 비밀번호를 입력하라는데 suninatas의 아이디 비밀번호는 나의 계정 정보로

http://www.suninatas.com/challenge/web24/chk_key.asp?id=????&pw=????&key=https://www.youtube.com/channel/UCuPOkAy1x5eZhUda-aZXUlg

라는 주소가 나왔고, 접속해보도록 하겠다.

 

틀리다고 나와서 안드로이드 환경에서 진행해보려고 LD player를 통해 apk를 실행해보도록 하겠다.

 

이렇게 해당 suninatas24.zip 파일을 apk로 확장자를 변경해서 LD Player를 통해 실행하면 위와같은

화면이 나온다.

id와 pw key를 입력해보도록 하겠다.

 

이렇게 키값이 나오고 해당 키값으로 인증을 하면 클리어가 된다.

 

 

Comments