Yozzang의 해킹일기 💻
article thumbnail
XSS game (Level 4)
Wargame/XSS game 2022. 7. 17. 00:07

이번 포스트에서는 XSS game의 Level 4 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : 우선 해당 웹 사이트에 alert()를 바로 삽입해서 공격해보겠다. ### 공격 코드 : ### 실행 결과 : 제대로 작동하지 않고 있다. 이어서 코드를 분석해보겠다. 분석한 결과, 우리가 삽입한 값이 23번째 줄의 timer에 들어간다는 것을 알 수 있다. 그러나 우리가 입력한 값이 parseInt() 함수를 통해 디코딩 되고 있다. 그럼 23번째 코드의 형식에 맞게 공격문을 삽입해보겠다. ### 공격 코드 : 1');alert('GOTYOU ### 실행 결과 : 공격에 성..

article thumbnail
XSS game (Level 3)
Wargame/XSS game 2022. 7. 16. 00:28

이번 포스트에서는 XSS game의 Level 3 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. 단 이번 문제는 애플리케이션 상이 아닌 URL 주소란을 활용해야 한다. ## 문제 풀이 : 우선 해당 웹 사이트에 XSS 공격이 적용되는지를 확인해 보겠다. ### 공격 코드 : 가 출력된 것을 확인할 수 있다. 여기서는 사진의 확장자인 jpg가 출력되었으므로 img태그가 활용되고 있다는 것을 추측해낼 수 있다. 또한 "'" 작은 따옴표로 끝나는 것을 알 수 있다. 그럼 img 태그라고 가정하여 onerror 핸들러를 활용하여 끼워맞추면서 공격을 실행해보곘다. ### 공격 코드 : ' onerr..

article thumbnail
XSS game (Level 2)
Wargame/XSS game 2022. 7. 15. 00:22

이번 포스트에서는 XSS game의 Level 2 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : script 태그를 사용해서 alert() 함수를 삽입해보겠다. ### 공격 코드 : ### 실행 결과 : script 문을 삽입해보니 제대로 실행되지 않다는 것을 알 수 있다. 힌트를 확인해보니 다음과 같다. script 태그가 동작하지 않다고 한다. 아마 필터링 처리되었을 것 같다. 또한 그 대신 i, m, g와 onerror가 동작한다고 한다. 그럼 img 태그의 onerror 핸들러를 활용해서 공격을 실행해보겠다. ### 공격 코드 : ### 실행 결과 : 공격에 성공..

article thumbnail
XSS game (Level 1)
Wargame/XSS game 2022. 7. 14. 00:07

이번 포스트에서는 XSS game의 Level 1 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : script 태그를 사용해서 alert() 함수를 삽입해보겠다. ### 공격 코드 : ### 실행 결과 : 공격에 성공한 것을 확인할 수 있다.

article thumbnail
Pwnable (15. cmd2)
Wargame/Pwnable 2022. 7. 13. 00:19

이번 포스트에서는 Pwnable의 cmd2 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag")!=0; return r; } extern char** environ; void delete_env(){ char** p; for(p=environ; *p; p++) memset(*p, 0, strlen(*p)); } int main(int..

article thumbnail
Pwnable (14. cmd1)
Wargame/Pwnable 2022. 7. 12. 00:39

이번 포스트에서는 Pwnable의 cmd1 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } ## 문제 해석 : 문제 코드를 살펴 보니, "flag", "sh", "tmp"를 필터링하는 filter..

article thumbnail
Pwnable (13. lotto)
Wargame/Pwnable 2022. 7. 11. 00:13

이번 포스트에서는 Pwnable의 lotto 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include #include unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto bytes : "); fflush(stdout); int r; r = read(0, submit, 6); printf("Lotto Start!\n"); //sleep(1); // generate lotto numbers int fd = open("/dev/urandom", O_RDONLY); if(fd==-1){ printf("error. tell admin\n"); exit(-1); } unsigned char lot..

article thumbnail
Pwnable (12. blackjack)
Wargame/Pwnable 2022. 7. 10. 00:09

이번 포스트에서는 Pwnable의 blackjack 문제에 대해 다루겠다. ## 문제 해석 : 해당 문제는 블랙잭 게임 문제이다. 총 100만 달러를 획득하면 flag를 획득할 수 있는 것으로 보인다. 또한 문제에서 제공된 링크를 통해 해당 프로그램의 소스 코드를 확인할 수 있었고, 그 코드 중의 취약점을 통해 문제를 해결할 수 있다. 링크 : http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html ## 문제 풀이 : 문제 코드 중 일부는 다음과 같다. int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); scanf("%d", &bet); if..

article thumbnail
Pwnable (11. coin1)
Wargame/Pwnable 2022. 7. 9. 00:44

이번 포스트에서는 Pwnable의 coin1 문제에 대해 다루겠다. 문제는 다음과 같다. ## 문제 해석 : 가짜 코인을 찾는 문제이다. N는 동전의 갯수이며 C는 시도 가능 횟수이다. 총 100개의 가짜 코인을 찾으면 flag를 획득할 수 있는 것으로 보인다. 해당 문제는 이진탐색 알고리즘을 통해 쉽게 해결할 수 있다. ## 문제 풀이 : 우선 임의의 정수를 넣어서 시도해보겠다. 임의의 정수 "50"을 넣었을 때 "50"의 무게값이 출력된 것을 확인할 수 있다. 이어서 "1", "2", "3", "4"를 넣었을 때 네 가지 수의 무게값의 합이 출력된 것을 확인할 수 있다. 이어서 이진탐색을 활용하여 공격코드를 작성해보겠다. ## 최종 결과 : ### 공격 코드 : from pwn import * POR..

article thumbnail
Pwnable (10. shellshock)
Wargame/Pwnable 2022. 7. 8. 00:12

이번 포스트에서는 Pwnable의 shellshock 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include int main(){ setresuid(getegid(), getegid(), getegid()); setresgid(getegid(), getegid(), getegid()); system("/home/shellshock/bash -c 'echo shock_me'"); return 0; } ## 문제 해석 : setresuid()와 setresgid()를 통해 user, group ID를 설정하고 bash를 실행하여 "shock_me"가 출력된 것을 알 수 있다. 여기서 해당 문제 이름을 보면 shellshock라고 되어있는데 이는 곧 CVE-2014-6271(Bash Shellsho..