보안공부 (92) 썸네일형 리스트형 [Root-me] HTML - disabled buttons 풀이 문제에 들어가니 사이트가 임시적으로 닫혔다고 나온다. 확인해보니 두 input이 모두 disabled되어있다. disabled를 풀어주고 아무런값이나 넣어 보내주면 플래그가 나온다. Webhacking.kr 36번 문제 풀이 vi로 index.php를 수정하다가 정전이 일어나 소스파일이 사라졌다고 복구하게 도와달라고 한다. vi는 편집을 하게되면 .swp(스왑 파일 형태)로 저장을 하고 있기 때문에 우리는 .index.php.swp파일이 존재함을 알 수 있다. 예상대로 파일을 내려받을 수 있게 된다. 받은 파일을 복구하기 위해 vi -r로 .swp파일을 열어보자. 열어보니 플래그가 있다. Clear! 번외 일반 텍스트 프로그램을 이용하여 열어줘도 나온다. Webhacking.kr 8번 문제 풀이 8번 문제에 들어가니 어서오라고 한다. 코드를 보아하니 이 문제의 admin이 되는것이 목표인 모양이다. 그런데 맨 위쪽을 보니 IP와 User-Agent를 수집하고 있다. (이쯤에서 대충 User-Agent로 SQL 인젝션 할것 같다는 감이 왔다.) 위와같이 생각하던 찰나, 다음 코드를 발견하게 된다. User-Agent값과 IP를 활용하여 등록을 하는 모양인데, Prepared statement등의 별다른 요소가 없는것을 보아 SQL 인젝션이 가능할것이라고 가늠할 수 있었다. User-Agent값이 담기는 $agent에 인젝션 구문을 삽입하고 SQL의 주석인 #을 활용하여 뒷부분을 비활성화 시켜주면 될 것 같다. 따라서 다음과 같은 구문을 생각해내었다. qwert', '[아이피]', 'admin' 우.. Webhacking.kr 60번 문제 풀이 60번 문제는 다음과 같은 문구로 환영(?)해준다. 우선 코드를 먼저 분석해보도록 하자. 코드를 보았을 때, 세션 ID(PHPSESSID)에 숫자가 아닌 다른 문자가 포함되어 있으면 Access Denied를 출력하며 코드를 탈출한다는 것을 알 수 있다. 위와 같은 사실을 알고난 뒤 우리의 세션 ID를 보면 알파벳과 숫자가 섞여있는 것을 볼 수 있다. 그럼 조건을 맞춰주기 위해 저 세션 ID를 모두 지우고 아무 숫자로 바꿔주고 다시 로그인하여 활성화시켜주자. 이렇게 숫자로만 이루어지도록 만들어주면 비로소 제대로 반겨준다. auth를 해주기 위해 주소에 ?mode=auth를 넣어주면 1초동안 sleep상태에 있다가 로드됩니다. 하지만 아무런 값도 나오지 않고 Auth~만 나오게 됩니다. 코드를 확인해보면 .. Webhacking.kr 48번 문제 풀이 문제에 들어가면 다음과 같은 창을 만나게 된다. 아무런 텍스트를 입력하고 Send버튼을 누르니 올라간다. memo라는 Input에서 보내지는 값이 배쉬 명령어로 처리되는지 확인하기 위해 ;ls를 입력해보았지만 아무 값도 나오지 않았다. 혹시나? 하는 마음에 삭제도 해보았지만 아무것도 나오지 않았다. 이제 남은것은 파일 업로드(upfile)밖에 없다. 그래서 아무 사진 파일이나 올려보았다. 사진을 올리니 [Delete] 왼쪽에 [upload file]이라는 버튼이 생기는것을 확인할 수 있었다. 이 버튼을 누르면 업로드한 사진을 볼 수 있었다. 그리고 [Delete] 버튼을 누르니 file deleted라는 문구와 함께 파일이 삭제되었다. 텍스트를 지울때는 그냥 아무런 표시없이 삭제되지만 파일을 삭제하는 경.. webhacking.kr 44번 문제 풀이 44번 문제에 들어가면 다음과 같은 화면이 반겨준다. 아무거나 입력하고 submit을 누르니 hello! [입력값]의 형태로 출력한다. 동작 원리를 분석하기 위해 view-source를 누르면 다음과 같은 코드를 확인할 수 있다. wargame.kr md5_compare 풀이 오늘은 md5_compare문제를 풀어보려고 한다. 문제에 들어가니 다음과 같은 폼이 기다리고 있다. view-source라고 되어있는 링크를 눌러 코드를 분석해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Colored by Color Scripter cs ctype_alpha는 값이 모두 알파벳일떄 true를 리턴해주는 함수이고, is_numeric은 값이 숫자일때 true를 리턴해주는 함수이다. 따라서 우리는 VALUE 1에는 알파벳을, VALUE 2에는 숫자를 입력해주어야 하고, 그 두 값의 md5의 해시가 같아야 플래그가 나온다는 사실을 알 수 있다. md5 해시를 어떻게 같게할 수 있을까? 불가능하다. 그런데 여기서.. webhacking.kr 11번 문제 풀이 오늘은 그동안 못했던 웹해킹을 다시 해보려고 한다. 간단하게 11번으로 시작해보자. 문제에 들어가면 다음과 같은 창이 반겨준다. GET을 통해 val을 받는다는데 html이라고 적혀있어서 당황했으나, 잘 확인해보니 이 페이지가 PHP로 구동되고 있다는 사실을 알 수 있었다. 주어진 PHP 코드를 분석해보자. 1 2 3 4 Colored by Color Scripter cs pat이라는 변수에 조건이 있고, GET을 통해 받은 val을 비교하여 값이 같으면 풀리는것 같다. pat의 조건은 다음과 같이 정리할 수 있다. 코드 역할 충족할 값 [1-3] 1~3에서 1개를 선택합니다. 1 [a-f]{5}_ a~f에서 5개를 선택합니다. abcde .*172.0.0.1.* .*172.0.0.1.* \tp\ta\t.. 이전 1 2 3 4 5 6 7 ··· 12 다음