본문 바로가기

Game

[200] prob61 200점 배점의 61번 문제이다.아무런 설명없이 소스링크만 안내해주고있다.제공해주니 확인을 해보았다.아주아주 익숙한 SQL Injection문제다.. Mysql의 as문으로 컬럼명과 내용들을 임시로 변경할 수 있다고한다.예를 들어서 1학년때 만들었었던 게시판의 member테이블인데, AS구문을 사용해서 idx필드명을 임시로 변경할 수 있다. select idx as number from member;idx값이 number로 변경된 것을 확인할 수 있다. 임시로 값이 변경되는 것 이므로 다시 조회해보면 다시 idx로 돌아와있다.또한, 컬럼에 있는 내용들또한 임시로 바꾸어 줄 수 있다고 한다. select "admin" as idx from member;idx의 값들이 모두 admin으로 바뀐것을 확인 할 .. 더보기
[500] prob28 500점 배점의 28번 문제이다!hint가 나와있고. upload/index.php를 누르면 readme라는 글만 뜬다.그리고 파일 업로드 폼이있는데 아무 파일이나 업로드해보면이런 문장이 추가로 더 뜬다.추가로 힌트가더 뜨는데 .htaccess 이라고 한다. 뭔가 싶어서 검색해보니 htaccess 파일은 분산 설정 파일(?)이고 디렉토리별로 설정을 변경할 수 있게 해준다고한다. 음.. 지금 같은 문제에서는 파일을 업로드하면 upload 디렉토리에 파일이 업로드되고 있는데,upload 디렉토리를 php가 작동하지 않게 설정을 바꾸어주면 안에있는 $pw가 그냥 출력되지 않을까? 우선 php의 동작을 끌 수 있는 옵션?같은게 있나 찾아보았다.http://php.net/manual/kr/apache.config.. 더보기
[350] prob8 오랫만에 웹해킹 문제를 풀었다 ㅠ^ㅠ.. 배점이 높아질수록 내가 직접 풀기보단 풀이를 보는 횟수가 더 많아지는 것 같아서 ..손이 잘 가지 않는다.. 풀이를 보더라도 빠르게 클리어하고 넘어가는게 맞는 일인가 고민.. 쨌던! 350점 배점의 8번 문제이다 그저 까만화면에 USER-AGENT라고 써져있고 done!이라고 뜬다...무슨 뜻일까..유저에이전트..어디서 많이 본것같다..소스보기를 해보니 소스를 제공해주어서 확인해보았다.HTTP_USER_AGENT값을 가져와서 $agent라는 변수의 값으로 사용하고 ip도 가져온다.처음보는 함수가있었다! trim($string) - 문자열의 처음과 끝에 있는 공백을 지움 strtolower($string) - 모든 알파벳을 소문자로 바꿈 그리고 user-agent는.. 더보기
[200] prob59 200점짜리 59번 문제이다. join, login폼이 있고, 문제의 소스를 제공해준다.소스를 확인! 소스를 볼때 라인이 있으면 더 편할 것 같아서 소스는 Sublime Text2!! 예쁘다!2 ~17 라인을 보면 sql쿼리문을 실행시켜 뭔갈 받아오는걸 보니 로그인하는 과정이고, 18~24는 insert문을 써서 id와 phone을 guest lv로 db에 저장한다. 두번째 라인부터 좀더 자세히 살펴보면 POST방식으로 로그인할때 받은 아이디[lid]와 번호[lphone]를 받아와서쿼리문에 넣어 해당하는 id를 받아온다. 그리고 해당하는 id가 존재할 경우 id와 lv를 출력한다. 그리고 lv가 admin일경우 @clear 18번째 라인부터 살펴보면 가입하는 과정인데, phone의 길이가 20자가 넘을경.. 더보기
[350] prob48 350점 48번 문제이다.메모라는 댓글창? 인데 간단한 메모를 쓰고, 파일 업로드를 할 수 있다. 파일 업로드를 해보려고 했는데, 파일명은 3글자를 넘어갈 수 없다고 한다. 그렇다면 paros로 파일명을 조작해서 업로드 할수 있으니까 간단한 웹쉘을 만들고 파일명을 줄여보기로 했다.파일명을 줄이니 업로드가 되긴했는데...업로드한 파일을 보려고 하니 null을 출력하기만 한다.다른 파일을 업로드 해보아도 마찬가지..웹쉘을 업로드해서 푸는 방식은 아닌 것같다. 업로드된 파일을 삭제해보았다.URL을 확인해보니 mode가 del이고, 파일을 업로드했던 시간을 함께 GET방식으로 보내주고있다.파일을 삭제 할 때 어떻게 동작할가 생각해보았는데 주로 디렉토리에 있는 파일을 삭제할때 쓰는 rm명령어를 사용할 것이다.그렇.. 더보기
[400] prob34 400점 34번 문제이다. 문제를 누르면 wrong!이라는 alert창이 뜬다.확인을 누르면 그냥 까만창만 뜨는데제공해주는 소스가 있을 것 이므로 소스보기! 안타깝게도 자바스크립트의 를 제외하고는 알아보기가 힘들었다.자바스크립트 난독화를 해제?해주는 사이 트에 소스를 붙여넣기 해보았지만딱히 알아볼 수 있도록..은 만들어주지 않았다. 생각해보니 크롬의 요소검사를 이용할 수 있을 것 같았다.어쨌든 페이지에서 스크립트가 동작한다는 거니까..이렇게 세개의 스크립트가 있다고 뜨는데,세번째 스크립트만 보면 된다.URL에 0lDz0mBi2라는 문자가 있으면 Passw0RRdd.pww로 이동한다.0lDz0mBi2라는 문자가 없으면 제일 처음 들어왔을 때처럼 alert창을 띄워준다. URL에 0lDz0mBi2문자를 넣어.. 더보기
[350] prob53 350점 53번 문제이다!하얀 바탕에 hello world라고만 출력되고 있다.. 우선 소스보기 index.phps get방식으로 answer를 받는데, 이때의 값이 hidden_table의 테이블명과 동일할경우 문제가 풀린다. 주로 테이블 명을 알아낼때 select table_name form information_schema.tables; 를 사용하는데, 소스를 확인해보면 union, select, from 이 모두 필터링 되고있다. 그러므로 다른 방식으로 테이블 명을 알아내야 하는데 구글검색을 하다보니 처음보는 함수를 하나 발견할 수 있었다. mysql 함수인 procedure analyse()함수로 확인할 수 있다.Field_name이라는 첫번째 컬럼에서는 1.2.3와 같이 마침표를 이용하여 세부.. 더보기
[350] prob35 350점 35번 문제이다.핸드폰 번호를 입력하는 박스이다.번호를 입력하고 add를 누르면 Done이라고 뜬다.아마도 SQL Injection문제일 것이다.. 분명 .. 소스를 제공해주고 있으므로 확인해 보았다.Get방식으로 전화번호를 받고있고, 전화번호에서 from, select등등의 문자열이 들어가면 no hack이라는 문구를 띄우면서 exit! 문제에서 주어지는 쿼리문을 잘 살펴보면insert into challenge35_list( id, ip, phone ) values( '$_SESSION[id]', '$_SERVER[REMOTE_ADDR]', $_GET[phone] ) 같은 식으로, id와 ip는 ''으로 싸여있으므로 문자형이고, phone에는 ''이 없으므로 정수형이다.이렇게 컬럼이 없는 곳.. 더보기
[350] prob3 350점 3번 문제이다.문제로 들어가면 네모네모 로직퍼즐이 뜬다.옛 기억을 더음어서...우선 퍼즐을 풀어보았다..퍼즐을 맞게 풀었다면 name이라는 박스가 있는 페이지로 이동하게 된다.이름을 적고 write를 누르면내가 적은 name과 내 답, 그리고 내 ip가 출력된다.소스를 봐도 딱히 이상한 부분을 찾지 못해서 크롬의 요소검사로 보았다. answer을 hidden필드로 value를 세팅해서 넘겨준다. 근데 이미 이 페이지로 넘어왔다는건 퍼즐을 정확하게 풀었다는 것이고,value의 값도 일정할텐데 굳이 이렇게 넘겨주는 것이 이상했다... value를 요리조리 만져봤다.test라는 문자열을 넘겨주니 쿼리 에러!라고 뜬다. SQL Injection에 사용될 법한 문자열들을 넣어주면 no hack!이라고뜬다.. 더보기
level 19 level 19전 레벨에 비해 소스의 길이가 급격하게 줄어들었다..달라진 부분은 권한상승을 해주는 부분이 사라졌다는 것 그러므로 쉘코드에 권한상승을 해주는 부분을 추가해주어야한다.두가지 선택이있는데쉘코드를 직접 만들던가, 인터넷에 있는 쉘코드를 가져와 쓰면된다 ㅋㅋ.. 사용한 쉘코드 : \x31\xc0\x31\xdb\x31\xc9\x66\xbb\x1c\x0c\x66\xb9\x1c\x0c\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 내가 항상 사용하던 25바이트 쉘코드 앞에 권한상승하는 부분을 덧붙여서 사용하였다.버퍼의 크기 작으므로 환경변수를 .. 더보기