Advertisement
zamcsaba

QPA18 - WARGAME - overflow C

Sep 22nd, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.12 KB | None | 0 0
  1. _init()
  2. {// addr = 0x000005C8
  3.     __rax = __imp____gmon_start__;
  4.     if(__rax != 0) {
  5.          *__rax();
  6.         return;
  7.     }
  8. }
  9.  
  10. void free(void* __ptr)
  11. {// addr = 0x000005F0
  12.     goto __imp__free;
  13. }
  14.  
  15. L000005F6()
  16. {
  17.     _push(0);
  18.     _push( *2101152);
  19.     goto ( *2101160);
  20. }
  21.  
  22. char* strcpy(char* __dest, char* __src)
  23. {// addr = 0x00000600
  24.     goto __imp__strcpy;
  25. }
  26.  
  27. L00000606()
  28. {
  29.     _push(1);
  30.     _push( *2101152);
  31.     goto ( *2101160);
  32. }
  33.  
  34. int puts(char* str)
  35. {// addr = 0x00000610
  36.     goto __imp__puts;
  37. }
  38.  
  39. L00000616()
  40. {
  41.     _push(2);
  42.     _push( *2101152);
  43.     goto ( *2101160);
  44. }
  45.  
  46. char* gets(char* dst)
  47. {// addr = 0x00000620
  48.     goto __imp__gets;
  49. }
  50.  
  51. L00000626()
  52. {
  53.     _push(3);
  54.     _push( *2101152);
  55.     goto ( *2101160);
  56. }
  57.  
  58. void* malloc(int __size)
  59. {// addr = 0x00000630
  60.     goto __imp__malloc;
  61. }
  62.  
  63. L00000636()
  64. {
  65.     _push(4);
  66.     _push( *2101152);
  67.     goto ( *2101160);
  68. }
  69.  
  70. __cxa_finalize()
  71. {// addr = 0x00000640
  72.     goto __imp____cxa_finalize;
  73. }
  74.  
  75. _start(
  76.     _unknown_ __rax,                       // r53
  77.     _unknown_ __rdx                        // r56
  78. )
  79. {// addr = 0x00000650
  80.     _unknown_ _t11;                        // _t11
  81.  
  82.     _pop(__rsi);
  83.     __r9 = __r9 & -16;
  84.     _push(__rax);
  85.     _push(__r9);
  86.     __imp____libc_start_main();
  87.     asm("hlt");
  88.     _push(_t11);
  89.     if( &completed.7696 !=  &completed.7696 && __imp___ITM_deregisterTMCloneTable != 0) {
  90.         _pop(__r8);
  91.         goto __rax;
  92.     }
  93.     _pop(__r8);
  94. }
  95.  
  96. deregister_tm_clones()
  97. {// addr = 0x00000680
  98.     __r8 = __r9;
  99.     if( &completed.7696 ==  &completed.7696 || __imp___ITM_deregisterTMCloneTable == 0) {
  100.         return;
  101.     } else {
  102.         _pop(__r8);
  103.         goto __rax;
  104.     }
  105. }
  106.  
  107. register_tm_clones()
  108. {// addr = 0x000006C0
  109.     __r8 = __r9;
  110.     if( &completed.7696 == 0 || __imp___ITM_registerTMCloneTable == 0) {
  111.         return;
  112.     } else {
  113.         _pop(__r8);
  114.         goto __rax;
  115.     }
  116. }
  117.  
  118. __do_global_dtors_aux(
  119.     _unknown_ __rax                        // r53
  120. )
  121. {// addr = 0x00000710
  122.     _unknown_ _t13;                        // _t13
  123.  
  124.     if(completed.7696 != 0) {
  125.         asm("repe ret");
  126.         asm("o16 nop [rax+rax]");
  127.         _push(_t13);
  128.         _t13 = __r9;
  129.         _pop(__r8);
  130.         _push(_t13);
  131.         if( &completed.7696 != 0 && __imp___ITM_registerTMCloneTable != 0) {
  132.             _pop(__r8);
  133.             goto __rax;
  134.         }
  135.         _pop(__r8);
  136.         return;
  137.     } else {
  138.         _push(__r8);
  139.         __r8 = __r9;
  140.         if(__imp____cxa_finalize != 0) {
  141.             __cxa_finalize();
  142.         }
  143.         deregister_tm_clones();
  144.         completed.7696 = 1;
  145.         _pop(__r8);
  146.         return;
  147.     }
  148. }
  149.  
  150. frame_dummy()
  151. {// addr = 0x00000750
  152.     _unknown_ _t11;                        // _t11
  153.  
  154.     _pop(__r8); RecCLI binary_file result.c
  155.     _push(_t11);
  156.     if( &completed.7696 != 0 && __imp___ITM_registerTMCloneTable != 0) {
  157.         _pop(__r8);
  158.         goto __rax;
  159.     }
  160. }
  161.  
  162. stringdecoder(
  163.     long long __rax,                       // r53
  164.     _unknown_ __rcx,                       // r55
  165.     long long __rdi                        // r57
  166. )
  167. {// addr = 0x0000075A
  168.     char _v12;                             // _cfa_fffffff4
  169.     signed char* _v24;                     // _cfa_ffffffe8
  170.     long long _v32;                        // _cfa_ffffffe0
  171.     _unknown_ _v48;                        // _cfa_ffffffd0
  172.  
  173.     _v48 = __rdi;
  174.     malloc(30);
  175.     _v32 = __rax;
  176.     _v12 = 0;
  177.     _v24 = _v48;
  178.     while(( *_v24 & 255) != 0) {
  179.          *((char*)(_v32 + _v12)) =  &(_v24[2]);
  180.         _v12 = _v12 + 1;
  181.         _v24 =  &(_v24[1]);
  182.     }
  183.      *((char*)(_v32 + _v12)) = 0;
  184. }
  185.  
  186. sztringkompar(
  187.     _unknown_ __rax,                       // r53
  188.     long long __rdi,                       // r57
  189.     long long __rsi                        // r58
  190. )
  191. {// addr = 0x000007CA
  192.     intOrPtr _v12;                         // _cfa_fffffff4
  193.     long long _v32;                        // _cfa_ffffffe0
  194.     long long _v40;                        // _cfa_ffffffd8
  195.  
  196.     __rsi = __rsi;
  197.     __rdi = __rdi;
  198.     _v32 = __rdi;
  199.     _v40 = __rsi;
  200.     _v12 = 0;
  201.     while(_v12 <= 29) {
  202.         if(( *(_v32 + _v12) & 255) == ( *(_v40 + _v12) & 255)) {
  203.             _v12 = _v12 + 1;
  204.             continue;
  205.         }
  206.         return;
  207.     }
  208. }
  209.  
  210. main()
  211. {// addr = 0x0000081B
  212.     char* _v16;                            // _cfa_fffffff0
  213.     char* _v24;                            // _cfa_ffffffe8
  214.     short _v28;                            // _cfa_ffffffe4
  215.     char _v32;                             // _cfa_ffffffe0
  216.     long long _v40;                        // _cfa_ffffffd8
  217.     long long _v48;                        // _cfa_ffffffd0
  218.     char _v56;                             // _cfa_ffffffc8
  219.     char _v66;                             // _cfa_ffffffbe
  220.     short _v68;                            // _cfa_ffffffbc
  221.     intOrPtr _v72;                         // _cfa_ffffffb8
  222.     long long _v80;                        // _cfa_ffffffb0
  223.     char _v88;                             // _cfa_ffffffa8
  224.     char _v152;                            // _cfa_ffffff68
  225.     char* _t27;                            // _t27
  226.  
  227.     _v56 = 7308898428035299941;
  228.     _v48 = 7257202747014083693;
  229.     _v40 = 30792319093947075;
  230.     _v32 = 0;
  231.     _v28 = 0;
  232.     _v88 = 8391447954337331813;
  233.     _v80 = 7810763973575863909;
  234.     _v72 = 1701538158;
  235.     _v68 = 27756;
  236.     _v66 = 0;
  237.     stringdecoder( &_v56, __rcx,  &_v56);
  238.     _v16 =  &_v56;
  239.     strcpy( &(((char*)( &_v152))[0x1e]), _v16);
  240.     free(_v16);
  241.     puts("PASSWD: ");
  242.     _t27 = gets( &_v152);
  243.     sztringkompar( &_v152,  &_v152,  &(((char*)( &_v152))[0x1e]));
  244.     if(_t27 != 0) {
  245.         puts("Ezt most ugye te sem gondoltad komolyan?");
  246.     } else {
  247.         stringdecoder( &_v88, __rcx,  &_v88);
  248.         _v24 =  &_v88;
  249.         puts(_v24);
  250.         free(_v24);
  251.     }
  252. }
  253.  
  254. __libc_csu_init(
  255.     _unknown_ __rdx,                       // r56
  256.     _unknown_ __rdi,                       // r57
  257.     _unknown_ __rsi,                       // r58
  258.     _unknown_ __r13                        // r64
  259. )
  260. {// addr = 0x00000940
  261.     signed long long __rbx;                // r54
  262.     _unknown_ __r15;                       // r66
  263.     _unknown_ _t3;                         // _t3
  264.     signed long long _t14;                 // _t14
  265.  
  266.     __rdi = __rdi;
  267.     __r9 = __r9 - 8;
  268.     _t14 =  &__do_global_dtors_aux_fini_array_entry -  &__frame_dummy_init_array_entry >> 3;
  269.     _init();
  270.     if( &__do_global_dtors_aux_fini_array_entry != 0) {
  271.         do {
  272.              *((intOrPtr*)( &__frame_dummy_init_array_entry + __rbx * 8))();
  273.             __rbx = __rbx + 1;
  274.         } while(_t14 != __rbx);
  275.     }
  276.     __r9 = __r9 + 8;
  277. }
  278.  
  279. __libc_csu_fini(
  280.     intOrPtr* __rax                        // r53
  281. )
  282. {// addr = 0x000009B0
  283.     __rax = __rax;
  284.     asm("repe ret");
  285.      *__rax =  *__rax + __rax;
  286.     __r9 = __r9 - 8;
  287.     __r9 = __r9 + 8;
  288. }
  289.  
  290. _fini(
  291.     _unknown_ __rax                        // r53
  292. )
  293. {// addr = 0x000009B4
  294.     __rax = __rax;
  295. }
  296.  
  297. _fini(
  298.     _unknown_ __rax                        // r53
  299. )
  300. {// addr = 0x000009B4
  301.     __rax = __rax;
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement