전체 글377 [root_me] PHP-Command Injection 세미콜론, &, &&를 사용하여 두 개의 명령어가 실행되도록 한다. cat 명령어를 사용하여 파일 내용 출력 혹은 파일 입력, 연결 등의 다양한 기능을 수행할 수 있다. & cat ./index.php & 를 입력하면 php 소스코드가 출력되고, f12를 통해 소스를 확인했다. 2020. 8. 1. [HackCTF] 마법봉 View Source 버튼을 클릭하여, 해당 소스를 확인하자. flag를 get 방식으로 보내 input 변수에 넣고 있다. 240610708을 md5로 암호화한 값과 sha1으로 암호화한 input 값이 동일할 경우 flag를 출력하는 것 같다. 매직해쉬 문제며, https://jihyeong-ji99hy99.tistory.com/67에 가서 매직 해쉬 원리에 대해서 이해하자. 매직해쉬 원리에 대해서 이해했다면, 아래에 보이는 각각의 암호화에 대해서 매직 해쉬 목록들을 확인하자. ( https://humit.tistory.com/170 이곳에 들어가면, 더 많은 매직해쉬 목록들이 존재한다.) 보다시피 240610708을 md5로 암호화하고 있는데, 매직 해쉬 값이라고 한다. 그럼 우리가 필요한 값은 s.. 2020. 7. 31. PHP 비교 연산자 취약점, 매직 해쉬 매직 해쉬, 0e로 시작하는 문자열에 뒤에가 모두 숫자일 경우 php에서는 float형태로 인식한다는 것이다. 매직 해쉬가 취약점이 될 수 있는데, 먼저 php.net 공식 홈페이지에서 가져온 연산자 정의를 봐보자. == 연산자 : $a와 $b가 같으면 true === 연산자 : $a와 $b가 같고, 동일한 자료형일 시에 true 이 둘을 비교했을 때, ==연산자가 갖는 취약점이 무엇인지 감이 잡히지 않는가? 두 비교 대상의 자료형을 검사하지 않는 것이다. (==연산자는 문자열과 정수를 비교했을 때, 문자열이 정수(int 혹은 float)로 바뀐다.) 결과적으로 매직해쉬(0e로 시작하는 문자열 뒤에가 모두 숫자면 float형태로 인식한다)와 ==연산자(두 비교 대상의 연산자의 자료형이 동일한지 검사하지 .. 2020. 7. 31. [Wargame.kr] QR Code Puzzle QR 코드를 퍼즐처럼 나눠놓고 마구잡이로 넣어놓은 것 같다. f12를 눌러 소스를 확인해보자. 수상해 보이는 스크립트 하나가 존재한다. 음... 내 주관대로 해석해보면 #join_img에 %2f%69%6d%67%2f%71%72%2e%70%6e%67 값을 부여하고, 퍼즐처럼 shuffling 시킨다. 그 후에 hide_pz() 함수를 실행시키는데, hide_pz() 함수는 #join_img div를 pz변수에 넣어 pz[1]과 pz[pz.length-2]를 삭제시킨다. 일단 각각의 조각들(#join_img div)에 집중하기 보다는, #join_img는 전체 이미지를 의미하는 것 같으므로 src에 부여된 값을 url 디코딩을 시켜보겠다. url 인코딩/디코딩 사이트 : https://www.converts.. 2020. 7. 19. [HackCTF] web 5번. Read File flag.php를 읽으라고 한다. 검색 창에 아무 값이나 입력했더니, 모르는 여러 값들이 들어가면서 404 Error라고 출력되는 것을 볼 수 있었다. 다시 뒤로 가기를 눌러 메인 페이지로 돌아가니, command를 url로 넘겨주는 것을 확인할 수 있었다. 여기서 뭘 해야 할까... 파일 읽기 함수도 넣어보고,, 여러 시도를 하다가 포기하고,, 구글링을 통해 풀었다. flag라는 단어가 필터링 된다고 한다. 다들 어떻게 잘 알아내는 걸까... ?command=flflagag.php 를 url로 넘겨줬다. 문제가 풀렸다. 다들 똑똑이 들이라서 flag라는 단어가 필터링되는 것을 알았을까... 나도 분발하자... 2020. 7. 19. [Wargame.kr] flee button 문제 풀이 마우스 커서를 졸졸 따라다니는 저 click me! 버튼을 눌러야 한다고 한다. 졸졸 따라다닌다... f12를 눌러 소스를 봐보자. body 부분에는 난독화된 스크립트, 일반 스크립트, div 태그가 존재한다. 그중에서 위의 버튼 타입의 input 태그를 보면, 버튼을 클릭했을 때 window.location에 ?key=7b25가 입력되는 것을 볼 수 있다. 직접 입력해보자. 플래그가 나왔다. 2020. 7. 18. [Wargame.kr] already got 문제 풀이 내가 이미 뭘 갖고 있을까... f12를 눌러 소스를 봐봤지만 별게 없었다.다른 분들 블로그에서 힌트를 얻어서 풀었다. HTTP 헤더에 key가 들어있다고 한다. f12를 눌러 헤더를 봐보자. 네트워크에 들어가서 새로고침을 하면 already_got/ 헤더가 뜬다. FLAG 이 부분인 거 같다. 풀었당. 2020. 7. 18. webhacking.kr 42번 문제 풀이 test.txt와 flag.docx 두 개의 파일이 있었다. test.txt는 다운로드할 수 있었지만, flag.docx는 access denied이 떴다. 일단 f12를 눌러 소스를 보자. a 태그로 다운을 받을 수 있게 만들었는데, url을 통해 파일명을 down 변수에 넣어 넘겨준다. test.txt 파일을 다운로드할 땐, dGVzdC50eHQ=를 넘겨주는 걸 볼 수 있었다. base64로 인코딩 값이다. ( Base64란 Binary Data를 Text로 바꾸는 Encoding의 하나로써 Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 Encoding이다. ) 그럼 flag.docx를 다운받기 위해서도 flag.docx .. 2020. 7. 17. [HackCTF] web 5번. guess me 일단 1234를 넣어 제출했더니 아래와 같이 guess를 GET방식으로 보내주는 것을 알 수 있었다. 그리고 if문에서 $guess와 'secret.txt'에서 추출해낸 $secretcode가 동일하다면, flag를 뱉어내는 과정이다. 우리가 눈여겨볼 것은 extract($_GET); 부분이다. extract함수는 취약점을 갖고 있는데, extract 함수 이전 변수 값을 변경할 수 있는 것이다. 또한 $filename 값을 조작함으로써 if($guess === $secretcode) 조건문을 제어할 수 있으므로 $secretcode가 우리가 알 수 있는 값이 나오도록 해야 한다. $filename에 대상에게 없는 파일 목록을 줬을 경우를 생각해내야 한다. 그럼 추출해낼 내용이 없으니 $secretcod.. 2020. 7. 17. 이전 1 ··· 33 34 35 36 37 38 39 ··· 42 다음