본문 바로가기

Wargame22

[Rookiss] simple login 30개의 문자열을 입력 받아 base64 디코딩 후 md5한 결과가 일치하면 인증이된다. 그런데 디코딩된 결과값을 md5 해쉬 값으로 사용하는 것도 아니라서 ;;; 그냥 취약점을 찾아서 풀어준다 ; 취약점은 아래의 auth함수에서 발생한다. copyBuf에서 base64디코딩 결과 12byte를 덮을 수 있다. ret은 조작 불가능 하지만 ebp까지는 덮을 수 있다. BOOL __cdecl auth(int length) { char v2; // [sp+14h] [bp-14h]@1 char *s2; // [sp+1Ch] [bp-Ch]@1 int copyBuf; // [sp+20h] [bp-8h]@1 memcpy(©Buf, &input, length); s2 = (char *)calc_md5((int.. 2014. 7. 27.
[Rookiss] brain fuck int __cdecl do_brainfuck(char a1) { int result; // eax@1 int v2; // ebx@7 result = a1; switch ( a1 ) { case '>': result = hasAddr++ + 1; break; case ''*7 + ',' #'/bin/sh\x00'payload1_data = '/bin/sh\x00'#'\x00hs/nib/'#payload2 : read &putspayload2 = ''*4#payload4 : setvbuf_plt Python 2.7.7 (default, Jun 1 2014, 14:21:57) [MSC v.1500 64 bit (AMD64)] on win32Type "copyright", "credits" or "license.. 2014. 7. 26.
[Rookiss] ascii_easy ascii 프로그램은 getchar로 한 문자 씩 입력받아서 vuln함수 내에서 strcpy를 수행하는 프로그램이다.아래에 코드에서 보다싶이 0xa8(168) + ebp + ret을 덮을 수 있게된다. (gdb) disass vulnDump of assembler code for function vuln: 0x080484f1 : push %ebp 0x080484f2 : mov %esp,%ebp 0x080484f4 : sub $0xb8,%esp 0x080484fa : movl $0x80000000,0x4(%esp) 0x08048502 : lea -0xa8(%ebp),%eax 0x08048508 : mov %eax,(%esp) 0x0804850b : call 0x80483d0 0x08048510 : leav.. 2014. 7. 21.
[Rookiss] dragon I made a RPG game for my little brother.But to trick him, I made it impossible to win.I hope he doesn't get too angry with me :P! Author : rookissDownload : http://pwnable.kr/bin/dragon Running at : nc pwnable.kr 9004 문제는 아주 간단하게 해결할 수 있는 UAF 취약점이다. system("/bin/sh")를 띄우는 코드도 문제 바이너리에 포함되어 있어서 쉽게 해결할 수 있다. 아래는 Hex-ray 코드이다. void __cdecl FightDragon(int job) { char v1; // al@1 void *v2; // ST1C_4.. 2014. 7. 20.