Wargame 182

*Challenge old 52 (400)

내 미션이 admin page에 접근하는 것이라고 한다. admin page를 들어가보자. 사용자 이름과 비밀번호를 입력하게 되어 있고 guest 계정은 guest/guest라고 하는 것을 보니, admin 비밀번호를 찾든 뭘 해서 로그인 하면 될 것 같다. guest로 로그인하면 hi guest가 출력된다. 로그인 창에서 취소를 누르면 다음과 같은 소스를 볼 수 있다. view-source 먼저, logout==1이면, 즉 guest-guest로 로그인 후 로그아웃을 누르면 login 세션은 사라지고 로그아웃된다. login 세션값을 admin으로 확인한 뒤에는 ip주소를 확인하고 필터링 후 flag를 출력한다! admin이 아니면 You are not admin을, admin인데 ip가 필터링 되면,..

Challenge old 41 (250)

파일 선택창이 up, 업로드 버튼이 upload이다 내가 파일을 올리면 fopen() 읽기 모드로 열려서 그곳에 flag가 적히고 다시 닫히는 행위가 이루어진다 중요한 곳은 $f = @fopen("./{$upload_dir}/{$fn}","w"); 이 부분으로, 그 파일이 어느 경로 {$upload_dir}에 copy되는지 알아야 flag가 적힌 파일로 이동할 수 있는 것이다 먼저 파일을 선택해서 upload 할 수 있길래 txt 파일을 만들어서 올려봤다 파일명, 내용 모두 영문자다 Done~이 뜨고 끝났다 그 외 제목, 내용 모두 영문자/숫자/한글/공백으로 된 txt 파일을 업로드 해봤으나 아무일도 없었다. 라업을 찾아보니 파일명을 특정 글자수 이상으로 설정해서 업로드하면 뜨는 에러가 힌트라고 한다 파..

Challenge old 42 (200)

test.txt, flag.docx 파일이 다운로드 버튼과 함께 테이블에 있다. 먼저, test.txt을 열어보면 아래와 같다. flag.docx 파일 다운로드를 시도하면 아래와 같은 얼럿이 뜬다. 이는 아마 admin 권한으로 다운로드가 가능하고 파일을 열어 flag를 보면 될 것 같다. nosubjectfile 2testtest.txt [download] 1read meflag.docx [download] 코드를 보니 flag.docx에서는 download를 클릭하면 바로 Access Denied 얼럿이 뜨도록 되어 있어서 그 부분을 flag, flag.docx로 바꿔봤다. 아무일 x 이게 아닌가 싶어 test.txt 쪽을 보니, test.txt 파일을 다운받는 코드가 위와 같았다. 인코딩되어 있는 ..

Challenge old 56 (250)

readme를 눌렀을 때 hi~를 눌렀을 때 readme가 admin이 쓴 게시물인 것 같고 acess denied가 뜨는 것으로 보아, 어떻게든 권한을 얻어서 그 게시물을 보면 플래그가 있을 것으로 추정된다 테이블 밑에는 검색창이 있다 먼저, 1부터 9까지 검색해봤을 때는 아무 것도 검색되지 않았다 0을 검색해보니 두 게시글 모두 검색되었다 이번엔 a부터 알파벳을 넣어보자 a를 검색해봤을 때는 readme가 검색되었다 검색된 알파벳들이다 a, c, d, e, f, g, h, i, k, l, m, n, o, s, t, u, y 하늘색은 readme, hi~가, 검정색은 readme만 검색된 알파벳이다 이후 저 위 글자들로 조합할 수 있는 몇 개의 예상 단어들을 검색해봤다 no, id, admin, htm..

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..