Yozzang의 해킹일기 💻
article thumbnail
Lord of SQLInjection (28. frankenstein)
Wargame/Lord of SQLInjection 2022. 6. 23. 00:50

이번 포스트에서는 Lord of SQLInjection의 frankenstein문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), union을 필터링하고 있다는 것과 에러가 발생하면 탈출한다는 사실을 알 수 있다. 또한 pw의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : error 출력 및 case문을 이용해서 공격을 시도해보겠다. 또한 ()괄호가 필터링 되어 있으므로 비밀번호의 길이를 구하지 않고 바로 비밀번호를 구하도록 하겠다. ### 사용할 공격문 : pw=1' or id='admin' and case when pw like ..

article thumbnail
Pwnable (3. bof)
Wargame/Pwnable 2022. 6. 22. 00:41

이번 포스트에서는 Pwnable의 bof 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } ## 문제 해석 : 문제 코드를 살펴 보니, 우리가 입력한 값이 overflowme 라는 변수에 저장되고 해당 변수의 크기가 32바이트인 것을 알 수 있다..

article thumbnail
Lord of SQLInjection (27. blue_dragon)
Wargame/Lord of SQLInjection 2022. 6. 21. 00:21

이번 포스트에서는 Lord of SQLInjection의 blue_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., ', \를 필터링하고 있다는 것을 알 수 있다. 또한 pw의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : "\"와 "'"가 필터링 되었으므로 이번에는 Time based SQL Injection 기법을 통해 공격을 실행해보겠다. ### 사용할 공격문 : id=&pw=' or if(id='admin' and length(pw) > 5, sleep(2), 1)%23 ### 실행 결과 : 페이지가 2초 동안 로딩한 뒤에 ..

article thumbnail
Lord of SQLInjection (26. red_dragon)
Wargame/Lord of SQLInjection 2022. 6. 20. 00:16

이번 포스트에서는 Lord of SQLInjection의 red_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, .을 필터링하고 있다는 것을 알 수 있다. strlen() 함수를 통해 id값의 길이를 7자 이하로 제한하고 있다. no값이 숫자인 경우에 그대로 쓰이고 아닌 경우에는 1로 변경된다. 또한 no의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 글자 제한이 걸려있으므로 최대한 짧은 쿼리문을 사용하여 no의 값을 알아내야 한다. 또한 is_numeric() 함수는 공백 문자 등을 인식하지 못하는 점을 활용하여 공격해..

article thumbnail
Pwnable (2. collision)
Wargame/Pwnable 2022. 6. 19. 00:46

이번 포스트에서는 Pwnable의 collision 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i> hashcode = 0x21DD09EC >>> hex(hashcode/5) # 5로 나누었을 때의 값 '0x6c5cec8' >>> hex(hashcode%5) # 5로 나누었을 때의 나머지 '0x4' >>> hex(hashcode/5+hashcode%5) # 5로 나누어 떨어졌을 때의 마지막 값(나머지 포함) '0x6c5cecc' >>> he..

article thumbnail
Pwnable (1. fd)
Wargame/Pwnable 2022. 6. 18. 00:12

이번 포스트에서는 Pwnable의 fd 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc

article thumbnail
Lord of SQLInjection (25. green_dragon)
Wargame/Lord of SQLInjection 2022. 6. 17. 00:13

이번 포스트에서는 Lord of SQLInjection의 green_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., ', "를 필터링하고 있다는 것을 알 수 있다. 또한 id의 값이 admin일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 "\"문자가 필터링 처리되지 않았으므로 "\"를 활용하여 공격을 시도해보겠다. ### 사용할 공격문 : id=\&pw= union select 0x61646d696e %23 ### 실행 결과 : "\"문자를 통해 id 파라미터의 값을 '\' and pw='로 만든 다음에 union문을 활용하여 s..

article thumbnail
Lord of SQLInjection (24. evil_wizard)
Wargame/Lord of SQLInjection 2022. 6. 16. 00:30

이번 포스트에서는 Lord of SQLInjection의 evil_wizard문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., proc, union, sleep, benchmark를 필터링하고 있다는 것을 알 수 있다. 또한 email의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 아무런 값을 넣어서 공격을 실행해보겠다. ### 사용할 공격문 : order=1 ### 실행 결과 : id값 admin의 email값이 *****로 출력된 것을 확인할 수 있다. email의 값을 알아내야 하기 때문에 Blind SQL Injection ..

article thumbnail
Lord of SQLInjection (23. hell_fire)
Wargame/Lord of SQLInjection 2022. 6. 13. 00:14

이번 포스트에서는 Lord of SQLInjection의 hell_fire문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., proc, union을 필터링하고 있다는 것을 알 수 있다. 또한 email의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 아무런 값을 넣어서 공격을 실행해보겠다. ### 사용할 공격문 : order=1 ### 실행 결과 : id값 admin의 email값이 *****로 출력된 것을 확인할 수 있다. email의 값을 알아내야 하기 때문에 Blind SQL Injection 기법을 활용해보겠다. 먼저 email..

article thumbnail
Lord of SQLInjection (22. dark_eyes)
Wargame/Lord of SQLInjection 2022. 6. 12. 00:21

이번 포스트에서는 Lord of SQLInjection의 dark_eyes문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), col, if, cast, when, sleep, benchmark를 필터링하고 있다는 것과 "Hello {id}"와 같이 쿼리의 참과 거짓을 알려주는 문구를 출력해주지 않다는 것을 알 수 있다. 또한 pw의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 참과 거짓을 구분해주는 문구가 사라졌지만 mysqli_error() 함수를 통해 우리가 입력한 쿼리가 참을 반환했는지, 거짓을 반환했는지를 알 수 있다. ..