본문 바로가기

보안공부/Webhacking.kr 풀이

(30)
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를 누르면 다음과 같은 코드를 확인할 수 있다.
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..
webhacking.kr 47번 문제 풀이 오늘은 47번 문제를 풀어보자. 문제를 읽어보니 메일 헤더 인젝션을 통해 플래그를 얻는것 같다. 이 문제에서 제공해준 코드를 읽어보니 다음과 같았다. 받아온 값에 From: 을 붙혀 아무런 필터 없이 그대로 메일을 전송하는 것이다.이렇게 된다면 참조자(cc)를 넣었을때도 메일이 정상적으로 발송된다는 결과가 나온다.따라서 데이터 교환을 수정하여 참조자(cc)를 추가하여 전송해보자. 원래는 다음과 같이 값이 넘어간다. 하지만 이제 저 값에 Cc를 추가해서 보내보자. 위와 같이 전송하니 답이 나왔다. WEBHACKING.KR 47번 문제 클리어!
webhacking.kr 33번 문제 풀이 오늘은 33번 문제를 풀어보자. 문제를 열자마자 다음과 같은 화면이 반겨준다. 제공해준 코드를 확인해보니 GET메소드을 통해 넘겨받은 get이 hehe이면 다음으로 넘겨주는것 같다. 그래서 문제가 코드가 요구하는대로 했더니 문제는 해결되었다. 2단계 문제가 나왔다. 주어진 코드를 확인했더니 이번에는 post 메소드를 통해 post에 hehe를, post2에 hehe2를 담아서 보내라 한다. JS로 가상의 폼을 만들어 전송할 수 있지만 귀찮으니까 HTML 수정을 감이해 보내보자. 위처럼 코드를 작성하여 Submit 버튼을 누르니 풀렸다. Next를 눌렀더니 3단계가 나왔다. 제공해준 코드를 확인해보니 get 메소드를 통해 myip에 내 아이피 주소를 담아 전송해주면 되는것 같다. 따라서 요구대로 해줬더니 ..