본문 바로가기

Wargame

(46)
[Dreamhack] ssp_000 #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } int main(int argc, char *argv[]) { long addr; long value; char buf[0x40] = {}; initialize(); read(0, buf, 0x80); printf("Addr : "); scanf..
CodeEngn Basic RCE L05 CodeEngn.com [코드엔진] CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 이 곳에서 저 파일을 다운 받는다. 문제를 보아하니 등록키를 찾는 건가 보다. 압축파일이기에 압축을 풀려고 했더니 암호를 입력해야한다. 저 암호가 찾아야 하는 등록키일까? 아니었다. exe 파일이 필요한데 압축이 안 풀려서 다른 사람이 인터넷에 올려둔 exe 파일을 다운받아야 했다. 실행했더니 이러한 창이 뜬다. 레지스터 창에 아무거나 입력했더니 틀린 시리얼키라고 한다. 찾아야하는 등록키란 이쪽인가 보다. Quit 을 누르니 저런 창이 뜨..
abex' crackme #5 보호되어 있는 글입니다.
[Dreamhack] validator 코드가 없어서 당황했다. 코드는 IDA로 열면 구할 수 있다. 적용된 보호 기법이 없다. ROP, shellcode execute, GOT overwrite 모두 가능하다. validator_dist int __cdecl main(int argc, const char **argv, const char **envp) { char s[128]; // [rsp+0h] [rbp-80h] BYREF memset(s, 0, 0x10uLL); read(0, s, 0x400uLL); validate((__int64)s, 0x80uLL); return 0; } S[128]에 read(0, s, 0x400)로 입력을 하니 BOF 발생 valiadate(s, 128) 함수를 호출 validator_server __int64..
[Dreamhack] cmd_center #include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { char cmd_ip[256] = "ifconfig"; int dummy; char center_name[24]; init(); printf("Center name: "); read(0, center_name, 100); if( !strncmp(cmd_ip, "ifconfig", 8)) { system(cmd_ip); } else { printf("Something is wrong!\n"); } exit(0); } system 함수로 명령어 실행 -> Command Injection 발생 위험 rea..
[Dreamhack] sint #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } int main() { char buf[256]; int size; initialize(); signal(SIGSEGV, get_shell); printf("Size: "); scanf("%d", &size); if (size > 256 || s..
[pwnable.kr] unlink 저 파일들을 로컬 환경에 다운받으려고 설쳤는데... 굳이 그러지 않아도 되었던 것 같다. #include #include #include typedef struct tagOBJ{ struct tagOBJ* fd; struct tagOBJ* bk; char buf[8]; }OBJ; void shell(){ system("/bin/sh"); } void unlink(OBJ* P){ OBJ* BK; OBJ* FD; BK=P->bk; FD=P->fd; FD->bk=BK; BK->fd=FD; } int main(int argc, char* argv[]){ malloc(1024); OBJ* A = (OBJ*)malloc(sizeof(OBJ)); OBJ* B = (OBJ*)malloc(sizeof(OBJ)); OBJ..
[Dreamhack] tcache_dup Canary와 NX 보호 기법이 걸려 있다. Partial RELRO -> GOT overwrite로 풀 수 있을지도? // gcc -o tcache_dup tcache_dup.c -no-pie #include #include #include #include char *ptr[10]; void alarm_handler() { exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60); } int create(int cnt) { int size; if (cnt > 10) { return -1; } printf("Si..