List soal PWN untuk KSL Seleksi
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
1.8 KiB

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