List soal PWN untuk KSL Seleksi
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

92 行
2.1 KiB

6年前
6年前
6年前
6年前
6年前
6年前
  1. //gcc -g -no-pie -fno-stack-protector -fno-pic -fno-builtin -mpreferred-stack-boundary=2 -m32 ingin_melompat2.c -o ingin_melompat2
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <unistd.h>
  6. int wallet = 18;
  7. char burung[8];
  8. void secret_message(){
  9. system("/bin/sh");
  10. }
  11. void init(){
  12. setvbuf(stdin, NULL, _IONBF, 0);
  13. setvbuf(stdout, NULL, _IONBF, 0);
  14. setvbuf(stderr, NULL, _IONBF, 0);
  15. }
  16. void buy_flag(){
  17. if(wallet < 999999999999) printf("kamu terlalu lemah dude :)\n");
  18. else secret_message();
  19. }
  20. void jual_burung(){
  21. char buffer[64];
  22. getchar();
  23. printf("burung apa yang kamu mau jual ?\n");
  24. fflush(stdout);
  25. fgets(buffer, sizeof(buffer), stdin);
  26. printf("yang kamu jual : ");
  27. printf(buffer);
  28. if(strcmp(buffer,"garuda") == 1 && strcmp(burung,"garuda") == 0){
  29. printf("burung berhasil di jual\n");
  30. wallet = wallet + 10;
  31. memset(&burung[0], 0, sizeof(burung));
  32. } else{
  33. puts("not found !\n");
  34. exit(0);
  35. }
  36. }
  37. void menu(){
  38. printf("+--------------------------------+\n");
  39. printf("---------PASAR BURUNG 2.0---------\n");
  40. printf("+--------------------------------+\n");
  41. printf("1. beli flag (sawit 1 hektar)\n");
  42. printf("2. beli garuda (10 ruby)\n");
  43. printf("3. lihat burung yang udah di beli\n");
  44. printf("4. jual burung\n");
  45. printf("5. check wallet\n");
  46. printf("6. exit\n");
  47. }
  48. int main()
  49. {
  50. while(1){
  51. char pilihan;
  52. init();
  53. menu();
  54. printf(">>");
  55. fflush(stdout);
  56. scanf("%s",&pilihan);
  57. switch(pilihan){
  58. case '1' :
  59. buy_flag();
  60. break;
  61. case '2' :
  62. if(wallet > 10){
  63. printf("burung berhasil di beli\n");
  64. wallet = wallet - 10;
  65. strcpy(burung,"garuda");
  66. } else printf("uang gak cukup!\n");
  67. break;
  68. case '3' :
  69. if(strlen(burung) == 0) printf("belum ada yang kamu beli!\n");
  70. else printf("burung yg dah di beli : %s\n",burung);
  71. break;
  72. case '4' :
  73. jual_burung();
  74. break;
  75. case '5' :
  76. printf("isi wallet : %d ruby\n",wallet);
  77. break;
  78. case '6' :
  79. printf("makasih udah berkunjung :)\n");
  80. exit(0);
  81. break;
  82. default :
  83. fprintf(stderr,"bad request!\n");
  84. exit(0);
  85. }
  86. }
  87. }