LineCTF 2022 Rolling
14371 ワード
これは一つの問題を解いた.
もう少しTrustCodeを差し込めばいいと思いました眠いです.
アプリをスマホでダウンロードし、開いてボタンを押すと終了してしまい、何か問題があると思います.
まずは本館を開くと.
ここからはチェックごとに1バイトが表示されます.(確かに推測です)
しかし、そのコードサイクル中にfridaを注射することは不可能です.
インストールされていないarm 64携帯電話のため...したがって、別の方法でライブラリを動的に使用して、低コードを再実装します.
idaの肉類は実際にはunsigned int 8であることに注意してください.
DWORDを用いて比較した.
もう少しTrustCodeを差し込めばいいと思いました眠いです.
アプリをスマホでダウンロードし、開いてボタンを押すと終了してしまい、何か問題があると思います.
まずは本館を開くと.
ここからはチェックごとに1バイトが表示されます.(確かに推測です)
しかし、そのコードサイクル中にfridaを注射することは不可能です.
インストールされていないarm 64携帯電話のため...したがって、別の方法でライブラリを動的に使用して、低コードを再実装します.
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
int main()
{
void* handle = dlopen("/data/data/com.termux/files/home/rolling/libnative-lib.so",RTLD_NOW );
if(!handle)
{
puts("dlopen error");
exit(0);
}
printf("pid : %d\n", getpid());
puts("dlopen success");
printf("handle addr : %p\n", handle);
int len = 0;
unsigned int* (*meatbox)(char*) = dlsym(handle, "_Z7meatboxPc");
unsigned int* (*soulbox)(char*) = dlsym(handle, "_Z7soulboxPc");
unsigned int* (*godbox)(char*) = dlsym(handle, "_Z6godboxPc");
char* asc_box = (size_t)meatbox + (0x30e0);
printf("meatbox addr : %p\n",meatbox);
printf("soulbox addr : %p\n",soulbox);
printf("godbox addr : %p\n",godbox);
printf("asc_box addr : %p\n",asc_box);
char flag[0x100] = {0};
char* ch = flag;
int idx = 0;
int while_flag = 1;
while(while_flag)
{
//brute force
for(int i = 0x20; i<=0x7f; i++)
{
*ch = i;
unsigned int* res_meatbox = meatbox(ch);
unsigned int* res_soulbox = soulbox(ch);
unsigned int* res_godbox = godbox(ch);
//printf("%p\n", asc_box+4*idx);
if(*((unsigned int*)(asc_box+4*idx)) == *res_meatbox)
{
if(*((unsigned int*)&asc_box[4*(idx+1)]) == *res_soulbox)
{
if(*((unsigned int*)&asc_box[4*(idx+2)]) == *res_godbox)
{
printf("%c",i);
if(i == '}')
while_flag = 0;
break;
}
}
}
}
ch++;
idx += 3;
}
}
ライブラリパスを調整しarm 64システムに戻るだけです.idaの肉類は実際にはunsigned int 8であることに注意してください.
DWORDを用いて比較した.
Reference
この問題について(LineCTF 2022 Rolling), 我々は、より多くの情報をここで見つけました https://velog.io/@kunshim/LineCTF-2022-Rollingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol