Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- practicalmalwareanalysis
- Reverse
- reversing
- rev
- writeup
- Rookiss
- BOF
- picoCTF
- Leak
- string
- pwnable
- Bug
- toddler
- pwnable.kr
- shellcraft
- CTF
- TUCTF
- ASM
- pwn
- shellcode
- Read
- pico
- Toddler's Bottle
- format
- 2018
- Bottle
- PMA
- CANARY
- anti
- FSB
Archives
- Today
- Total
제리의 블로그
picoCTF 2018 be-quick-or-be-dead-1 Reversing 본문
void header()
{
unsigned int i; // [sp+Ch] [bp-4h]@1
puts("Be Quick Or Be Dead 1");
for ( i = 0; i <= 0x14; ++i )
putchar('=');
puts("\n");
}
void __noreturn alarm_handler()
{
puts("You need a faster machine. Bye bye.");
exit(0);
}
void set_timer()
{
if ( __sysv_signal(SIGALRM, (__sighandler_t)alarm_handler) == (__sighandler_t)-1 )
{
printf(
"\n\nSomething went terribly wrong. \nPlease contact the admins with \"be-quick-or-be-dead-1.c:%d\".\n",
59LL);
exit(0);
}
alarm(1);
}
void get_key()
{
puts("Calculating key...");
key = calculate_key();
puts("Done calculating key");
}
void print_flag()
{
puts("Printing flag:");
decrypt_flag(key);
puts(&flag);
}
int __cdecl main(int argc, const char **argv, const char **envp)
{
header();
set_timer();
get_key();
print_flag();
return 0;
}
바이너리를 주는데
분석 해보면 위와 같이 된다.
alarm(1); 로 세팅해놓고
SIGALRM 이 울리면 종료하게 만들었다.
키값을 복호화하는 알고리즘을 분석할 필요 없이
바이너리 패치로 alarm() 시간을 크게 하면 된다.
# ./be-quick-or-be-dead-1_patched
Be Quick Or Be Dead 1
=====================
Calculating key...
Done calculating key
Printing flag:
picoCTF{why_bother_doing_unnecessary_computation_27f28e71}
'CTF > reversing' 카테고리의 다른 글
picoCTF 2018 keygen-me-2 Reversing (0) | 2018.10.03 |
---|---|
picoCTF 2018 assembly-3 Reversing (0) | 2018.10.02 |
IceCTF 2018 Reverse Engineering - 1. Locked Out (0) | 2018.09.18 |
TokyoWesterns CTF 4th 2018 twctf dec_dec_dec (0) | 2018.09.04 |
dingJMax @ Samsung CTF (SCTF) 2018 (0) | 2018.07.20 |
Comments