Wargame/webhacking.kr

    Challenge old 53 (350)

    Challenge old 53 (350)

    $hidden_table로 표현된 숨겨진 테이블 명과 answer 쿼리가 같으면 풀리는 문제인 것 같다.일단 select 문에서 val와 a를 언급하고 있으니 ?val=1부터 넣어봤다.val=1일 때, 1이 그대로 출력되었다이는 2, 3, 4 동일했으며 0과 5는 아무 반응이 없었다.?val=a로 넣었을 때도 1이 출력되었다. 별 의미 없겠지만 테이블을 추측할 수 있다.aval11223344 테이블명은 Blind SQL Injectinon으로 알 수 있을 것 같다.UNION SELECT table_name FROM information.schema.tables를 사용하여 테이블명을 알아낼 수 있지만select가 필터링 되기 때문에 procedure analyse()를 사용해보자. select a from..

    Challenge old 51 (250)

    Challenge old 51 (250)

    초기 화면에는 Webhacking.kr 내 ID와 비번이 들어있고 제출을 눌러보면 Wrong 이 뜬다

    Challenge old 48 (350)

    Challenge old 48 (350)

    일단 메인 화면에 들어가면 알 수 없는 사람 사진과 시간, 문자가 리스트로 찍혀있습니다 저도 파일을 선택해서 넣어볼게요 바탕화면에 있는 jpg 파일과 asdf라는 문자열과 함께 Send를 눌러보겠습니다 Send한 시간과 제 ID, 문자열이 뜨고 upload file을 누르면 제가 선택한 이미지 파일이 새 창으로 떠요 Delete를 누르면 아래 페이지로 넘어가며 이 목록이 삭제됩니다 그런데 별다른 파일을 업로드하지 않았을 때 삭제를 시켜보면, 위 페이지로 넘어가지 않고 고냥 삭제가 되네요 이 사진이 4.jpg라는 것도 알아냈습니다.. 힌트는 파일 업로드 후 삭제 페이지에 있었는데요, 다음은 그 페이지의 URL 입니당 mode=del..? 이 뭘까 찾아봤어요 첨에는 del mode가 있는 건지 알곸.. 검색..

    Challenge old 47 (150)

    Challenge old 47 (150)

    메인 화면은 위와 같고, 소스는 별거 없습니다 메일 폼은 post 방식이며 input 박스의 최대 길이는 50이라는 것! 일단 그대로 send 버튼을 눌러볼게요 이런 게 뜹니다 또 넣어보려고 하니 10초 제한이 뜨네요^^ 10초가 지난 뒤 flag?라는 문자열을 넣어보니 위와 같이 떴습니다. 표시된 날짜와 시간은 임의로 정해진 것 같네요 도대체 눈치가 안와서 구글링을 해보고 "Mail Header Injection" 문제라는 것을 알아냈슴다.. PHP에서 메일을 보내는 함수, 즉 mail()은 다음과 같은 인자를 갖는데요 mail(수신자, 제목, 내용, 옵션) 여기서 옵션은 헤더라고도 하고, 이 헤더 부분을 조작하는 공격이라 Mail Header Injection인 겁니다 이제 헤더에 무언가를 추가하여 ..

    Challenge old 46 (300)

    Challenge old 46 (300)

    소스를 보면 다음과 같습니다. get방식의 lv라는 변수에 대해서 말하고 있네요 addslashes() 라는 함수는 싱글/더블쿼터, 역슬레시, 널문자 등을 예외처리 시켜 쿼리 작성에 혼동이 오지 않게 합니당 그 밑을 보면 공백, /, *, %, preg_match()의 각종 단어들은 모두 필터링을 하고 있고요 어쨌든 id가 admin이면 풀립니다! 그럼, 첫 화면인 lv 1 부터 쿼리를 넣어볼게요 그리고 밑 세 사진은 2, 3, 4를 각각 넣은 화면입니다 0과 5 이상부터는 아무 일도 없었어요. 따라서 chall46이라는 이름의 테이블을 추측할 수 있습니다. id cash Itusy 1100 udnrg 800 fvvcg 1200 bzrbo 700 admin ? 하지만 위 테이블이 어떻게 생겼는지는 사실 ..

    Challenge old 38 (100)

    Challenge old 38 (100)

    일단 admin 넣어보는 거다 그렇지 그렇지... 이렇게 나와야지 코드를 보니 admin.php 가 숨겨져 있었고 그곳엔 로그가 있었다 (찍힌 admin은 훼이크) 필터링을 피해 무사히 admin을 로그에 찍는 것이 문제다! 다시보니 로그인 인젝션이 아니라 로그 인젝션이다 ^^ %00, %0a, %09, \n, +, 다 안된다 흠.. 되게 예전에 배웠던 건데 input 대신 textarea로 수정하여 첫 줄 필터링을 막아보쟈 Login 버튼을 누르고 로그창을 확인해보자 이렇게 하는 것 말고도, 프록시툴로 잡아서 직접 개행문자인 "0D 0A"를 입력하여 개행으로 필터링을 피할 수도 있나보다~

    *Challenge old 37 (250)

    *Challenge old 37 (250)

    초기화면이다. 파일을 따로 선택하지 않고 제출 버튼을 누르면 아래와 같이 tmp 파일이 더 만들어진다 파일을 선택하고 넣으면(0125영단어...) 파일명이 목록에 추가된다 먼저 소스 코들 보자 view-source 개길다

    Challenge old 36 (200)

    Challenge old 36 (200)

    이건 전혀 감이 안와서 흠.. vi로 편집 중에 강종되고 코드가 사라졌다? 일단 언급된 index.php! 그대로당 "유닉스 환경에서 vi 편집 중 강제 종료가 되면 swap 파일이 생성된다" 는 지식을 몰랐다 ㅎ 파일이 다운로드 됐는데 헥사 에디터로 파일을 열어보니 마지막에 플래그가 있었다!

    Challenge old 33 (200)

    Challenge old 33 (200)

    코드는 간단하다 시키는 대로 해봤다 얌전히 Next를 눌러봤다 아 이렇게 나온다 이거지? lv2라고 친절하게 나와있다 이번에도 시키는대로 post 방식의 폼을 작성해준다 역시 Next가 뜨고 다음으로.. 이번엔, get 방식으로 내 IP를! 다음 코드! 이를 md5로 인크립트하고 get에 넣즈아 하고 호기롭게 넣었는데 안됐닼 알고보니 time()은 스크립트 시작부터 지금까지 흐른 시간이라거.. 그래서 현재 시간보다 더 나중 시간을 미리 복호화해놓고 기다렸는데 계속 안됐다... 알고보니 대문자라서; 소문자로 바꾸고 타이밍 맞춰 새로고침했더니 됐다! 여기서 10분은 쓴 것 같닿;; 다음은 또 md5? 먼저 post 부터 해주자 다음은 쿠키~ 마지막으로 imget 파라미터! Next가 생겼따 다음 페이지 이 ..

    Challenge old 32 (150)

    Challenge old 32 (150)

    메인화면엔 1부터 1000번대까지 랭크가 되어있고, 그 중 하나를 클릭하면 내가 이미 투표하였다는 얼럿이 뜬다 정작 누굴 클릭했는지 까먹은게 함정 어쨌든 다른 순위에 비해서 1등이 매우 화려하게 디자인 되어있는 걸로 봐서는 나를 1등으로 해야할 것 같다 일단, 쿠키값을 삭제하고 나를 추천해보자.. 한 번 투표하고 799등에 자리잡았다 다른 분들은 멋지게 코드를 작성하던데 나는 노가다를 하기로 했다 쿠키를 생성하지 않게 하고 49번 클릭한 상황이다 감격의 순간..

    [미완] Challenge old 31 (150)

    [미완] Challenge old 31 (150)

    rand()로 10000부터 10100 사이 숫자로 port에 저장하고 fsockopen()으로 소켓에 연결을 하는데.. 포트 번호가 안맞아서 Connection refused라고 뜨네요 먼저, $socket부분 먼저 보면 $socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) or die("error : {$errstr}"); 함수의 파라미터가 순서대로 hostname, port, errno, errstr, timeout이고, 실패하면 에러 메시지를 출력하는 함수입니당 지금은 오류가 떠서 에러 메시지가 떴고, get 방식으로 server라는 파라미터명에 제 ip가 붙었어요 그럼 포트 번호에 맞게 설정을 해줘봅시다 포트 포워딩을 위해서, 제가 쓰는 sk..

    Challenge old 26 (100)

    Challenge old 26 (100)

    id가 admin이면 풀리지만, 필터링이 되어 있어서 admin 그대로 넣으면 안된다 그대신 admin을 URL 인코딩해서 넣어보자 이렇게 넣어봤더니 admin으로 자동 변환되어 no!가 그대로 떴다 그래서 한 번 더 인코딩을 해봤다