본문 바로가기

CTF_/webhacking.kr20

[webhacking.kr] old-48(350) 풀이 [old-48] - 들어가면 글과 파일을 올릴 수 있는 form이 있다. - 글을 올려보니 별 다른 것은 없었다. - 웹쉘인가 싶어서 shell.php를 올리고 한번 upload file을 통해 들어가 보았다. - 별 다른것은 없어보이고, GET방식으로 ls 를 보내도 아무 응답이 없다.- 그냥 코드 출력만 해주는 것 같다. - Delete를 누르면 ?mode=del&time=[글 작성 시간] 으로 이동하며, 파일이 삭제가 된다.- 전혀 몰라서 구글링을 해보니 del mode에서는 rm /upload/[내 파일명] 형태가 이루어 져서 내 파일이 삭제 된다고 한다.- rm /upload/[내 파일명] 이므로 명령어를 더 실행하기 위해서 ; 이나 & 이나 | 를 붙여서 뒤에 명령어를 더 써주면 된다. - 파.. 2020. 2. 3.
[webhacking.kr] old-47(150) 풀이 [old-47] mail header injection - 들어가면 이렇게 되어 있고, 코드도 특별한 것이 없다. - send 버튼을 누르자 위와 같은 화면이 뜬다.- Subject에 Flag of webhacking.kr old-47 chall이 들어간걸로 보아 Mail subject의 값을 변경해서 문제를 푸는것 같다.- mail header injection을 할 때, 보통은 Cc 를 이용하여 공격을 한다.- Cc 란 참조자로 만약 a 가 b에게 보낸다고 할 때, Cc : c@mail.com 을 추가한다면 c에게도 같은 메일이 가게 된다.- 위의 문제를 풀기 위해서는 우선 subject 부분을 두 줄 이상 쓸 수 있어야 한다. - 위와 같이 로 변경하여 두 줄을 입력하자. - 주의 해야 할 점은 C.. 2020. 2. 3.
[webhacking.kr] old-44(500) 풀이 [old-44] command injection - view-source를 눌러 코드를 보자. - $_POST['id']로 아이디를 받고 $id의 5글자를 system("echo 'hello! {$id}'");로 출력한다.- admin이란 글자를 입력하면, amdin이 출력된다. - 리눅스에서 두가지 명령어를 실행하려면 ; 또는 &붙이고 뒤에 명령어를 입력하면 된다.- system("echo 'hello! {$id}'"); 이므로 $id에 ';ls를 입력하면 system("echo'hello! ';ls ' ");가 되므로 뒤에 '하나가 비게 된다.- 따라서 끝에 '을 하나 더 붙여준다 $id에 ';ls'가 되면 실행이 가능하다. - flag_29cbb98dafb4e471117fec409148e938675.. 2020. 2. 1.
[webhacking.kr] old-20(200) 풀이 [old-20] js 기초 - 쿠키값을 보면 st가 있다. - time limit가 있는 걸로 보아, st로 시간이 2초 지났는지 확인하는 것 같다. - 소스코드를 보면 버튼을 누르면 ck() 함수로 넘어간다.- ck()함수에서는 값이 비어있는지 확인하고 값과 확인 문자가 같은지 확인한다.- 콘솔창에서 새로고침 후 2초안에 저 구문을 입력하면 문제 클리어 2020. 2. 1.
[webhacking.kr] old-19(150) 풀이 [old-19] base64, md5, url인코딩 - 별로 볼게 없다.. 소스 코드를 보자. - 이번엔 코드도 별로 볼게 없었다. - 제출을 누르니 나는 admin이 아니라고 한다.. - 한번 guest로 로그인을 해보니 쿠키가 새롭게 생겼다 - 쿠키값의 끝에 %3D가 신경 쓰이는데, 이 %3D는 =이다.- 즉, 쿠키의 값은 base64로 인코딩 되어있다.- 콘솔창을 통하여 디코딩을 해보았는데 잘 모르겠다. - a로 로그인하자 쿠키의 userid가 바꼈다. - 이 값을 디코딩하면 32글자가 나온다. 이것은 md5의 인코딩 방식 - 위의 값을 md5복호화 하면 a 가 나온다.- guest에 있던 문자들을 32글자로 나눠서 디코딩을 해보자.- 글자가 32*5로 잘 맞았고 디코딩 결과 guest 문자였다.-.. 2020. 1. 31.
[webhacking.kr] old-12(250) 풀이 [old-12] js난독화, js 기초 - javascript challenge 라고 써져있다. - 페이지 소스 코드를 보니 script 태그 안에 이모티콘들이 많다..- 이 난독화 방법은 aaencode 방식이다.. (일본의 개발자가 만들었다고 한다.)* http://utf-8.jp/public/aaencode.html 난독화 사이트* https://cat-in-136.github.io/2010/12/aadecode-decode-encoded-as-aaencode.html 복호화 사이트- 복호화 사이트에 저 이모티콘들을 넣어도 되고, 맨 끝의 ('_'); 부분을 지우고 콘솔창에 입력하면 코드가 출력된다. - 복호화한 코드이다.- ck는 document.URL.substr(document.URL.inde.. 2020. 1. 31.
[webhacking.kr] old-11(300) 풀이 [old-11] _ 정규표현식 - 들어가면 Wrong이 뜬다. view-source를 눌러 코드를 보자. - $pat에 저 문자열을 넣은 뒤 밑으 preg_match로 일치하는지 확인한다.- [1-3] : 1~3중에 아무 문자 하나- [a-f] : a~f중에 아무 문자 하나- {5} : 앞의 문자를 5번 반복 ([a-f]{5} : a~f의 문자들을 5번 반복)- _ : 그냥 문자 _- * : 문자 0번이상 반복- $_SERVER[REMOTE_ADDR] : 자신의 외부 ip 주소- \t : tap(URL 인코딩으로 %09) - 종합 해보면 자신의 ip주소가 127.0.0.1의 경우 1aaaaa_127.0.0.1%09p%09a%09s%09s 가 된다. 2020. 1. 31.
[webhacking.kr] old-10(250) 풀이 [old-10] html 이해 * 구글 크롬에서는 문제가 안풀립니다. (internet explorer 사용 권장) - 들어가면 O가 있고 오른쪽에 Goal이 있다. - 코드를 보면 O에 마우스를 올리면 yOu로 변경되고, O를 클릭하면 1px 오른쪽으로 이동한다.- 그리고 1600px 만큼 움직이면 문제가 풀리게 된다. - internet explorer로 다시 들어가서 빨간 네모 부분을 1600으로 변경하고 O를 누르면 클리어 2020. 1. 31.
[webhacking.kr] old-06(100) 풀이 [old-06] base_64 - ID와 PW가 써있다. view-source를 통해 코드를 보자. - 주목해서 봐야할 부분은 아래쪽이다.- cookie로 user와 password를 받고 20번 디코딩을 한 뒤 id=admin, password=nimda 이면 풀리게 된다.- base64로 인코딩 할 경우 특수문자는 생기지 않으므로 str_replace는 무시해도 된다. (=패딩만 생긴다) - EditThisCookie로 보면 원래는 user와 password가 있을텐데 PHPSESSID 빼고 나머지를 삭제한다. - 콘솔창을 통해 user, password쿠키 값을 base64로 20번 인코딩 한 뒤 설정 해주면 문제가 풀리게 된다.- 기존의 user, password 쿠키를 삭제하지 않을경우 쿠키값이.. 2020. 1. 31.
[webhacking.kr] old-04(300) 풀이 [old-04] 레인보우 테이블 - 들어가면 어떠한 값이 써져있고, Password를 입력하는 칸이 있다. - php 부분을 보면 brute force 공격을 막기 위해 sleep(1)함수가 적용되어 있고,- 10000000~99999999+salt_for_you 라는 문구를 $_SESSION['chall4']에 저장하고,- 그것을 sha1로 500번 암호화 하여 출력한다.- 우리가 알아야하는것은 sha1로 암호화 하기 전의 문자열이다.- 이 문제를 풀기위해서는 레인보우 테이블이라는 것이 필요하다.- sha1은 단방향 암호화 방식이다. (해시값에서 평문값을 못찾는다)- 단방향 암호화를 복호화 하려면 해시값끼리 비교해보는 것이 유일하다.- 즉, 레인보우 테이블이란 해시값에서 평문을 추출하기 위한 목적으로 .. 2020. 1. 31.
[webhacking.kr] old-17(100) 풀이 [old-17] js 기초 - 페이지 소스 코드를 보자. - 내가 form 태그를 통해 입력한 값과 unlock 값이 같으면 풀리게 된다. - 콘솔창을 통해 결과값을 alert를 통해 출력해 주자.- 7809297.1을 form태그를 통해서 전송하면 url이 https://webhacking.kr/challenge/js-4/?780929.71로 바뀌면서 Clear! 2020. 1. 30.
[webhacking.kr] old-16(100) 풀이 [old-16] js 기초 - 들어가면 노란 별이 있다. - script 부분을 보면 키를 누르면 mv(event.keyCode)에 의해 입력한 키의 값이 mv함수로 전해진다.- mv 함수를 보면 cd가 124일 때, 문제가 풀리게 된다.- 124는 아스키 코드로 | - | 를 입력하면 문제가 풀린다. 2020. 1. 30.
[webhacking.kr] old-15(50) 풀이 [old-15] js - 들어가자 마자 Access_Denied 가 뜨며 webhacking.kr로 돌아간다. - request모듈을 통해 페이지 파싱을 해보았다. - alert("Access_Denied")라 뜨고 location.href를 통해 webhacking.kr로 돌아가게 된다.- flag는 ?getFlag로 들어가면 있는것 같다. - https://webhacking.kr/challenge/js-2/?getFlag를 입력하면 문제가 풀린다. 2020. 1. 30.
[webhacking.kr] old-14(100) 풀이 [old-14] js기초 - 바로 페이지 소스 부터 보자. - form 부분에서 check를 누르면 ck() 함수로 이동한다.- script를 보면 ck() 함수가 있고 ul 값과 내가 입력한 값이 맞으면 풀리게 된다. - console 창을 통해 자바스크립트 구문을 넣어주면 ul 값이 나온다.- 540을 입력하면 url이 https://webhacking.kr/challenge/js-1/?291600로 바뀌며 Clear! 2020. 1. 30.
[webhacking.kr] old-33(200) 풀이 [old-33] get, post, cookie 전송 - view-source를 눌러 소스 코드를 확인하자.- 뭔가 흰색 바탕이라 맘에 든다 ㅎ... - GET 방식으로 hehe를 보내면 된다. - get=hehe 를 url에 넣어 입력을 해주면 Next가 뜬다 (이때 까지만 해도 문제의 갯수를 몰랐다..) - 계속해서 view-source를 눌러보자. - 이번에는 POST 방식으로 hehe와 hehe2를 전송해주면 된다. - Edit as HTML 기능을 이용하여 form 태그를 작성 후 POST 방식으로 전송을 해주자. - Challenge 33-2 Clear ! - Next 를 누르자 - 계속해서 view-source를 누른다. - 이번에는 GET 방식으로 내 아이피 주소를 전송하면 된다.- 구글이.. 2020. 1. 26.