Wargame - dmbs335
2021. 10. 3. 20:38
워게임/Wargame.kr
dbms335라는 문제이며 sqli 문제임을 확인할 수 있다. 들어가면 일반 게시판에 검색할 수 있는 기능이 있다. 소스보기를 통해서 확인해보자. 소스에서 보면 parse_str을 통해서 SERVER('QUERY_STRING')에서 받은 값을 php변수로 저장하고 query_parts 변수가 있다면 where_clause문에 해당 변수의 내용을 넣어주게 된다, 이때 조건은 search_cols 변수가 존재 할 경우이다. 우리는 이 세가지 내용을 활용하여 우회할 수 있다. seach_cols변수에 preg_match가 false가 되게 만들어 query_parts 변수에 원하는 쿼리문을 집어 넣어 실행하면 flag 값을 얻을 수 있을 것이다. union select 1,2,3,4-- 을 사용해서 컬럼 수를..
Wargame - SimpleBoard
2021. 9. 26. 22:49
워게임/Wargame.kr
간단한 UNION SQL INJECTION 문제라고 나와있다. web chatting을 union based sqli로 풀었으니 비슷한 문제일거 같다. 들어가 보면 4개의 게시물이 있다. 들어가 보면 일반적인 게시글 형태로 되어 있으며 idx라는 파라미터 구분자로 구분하고 있다. 그렇게 idx에 union 구문을 넣어 전달하는데 계속해서 query error를 응답했다.. 처음에 위에서 스크립트가 필요하다할때 생각보다 컬럼 수가 많은가 생각했었다,, 소스보기를 통해서 살표보면 read_chk 함수를 통해서 "/".$idx가 존재하면 값을 읽어오고 아니면 에러를 띄우는거 같다. 쿠키 값을 확인해보니 위와 같이 /0으로 view 값에 들어가 있는것을 확인할 수 있었다. 쿠키 값에 똑같이 union selec..
Wargame - web chatting
2021. 9. 26. 21:07
워게임/Wargame.kr
간단한 SQL Injection을 통한 문제이고, 트래픽을 줄이기 위해서 개발자 관점에서 봐달라고 써져있다. 들어가면 ID란에 입력 후 채팅창으로 들어갈 수 있는데 sqli문제라면 입력란에 공격을 해보게 되는데 이부분에서 해당이 안되었다. 들어가면 채팅창을 입력할 수 있게되었는데, 입력하다보니 도움이 될 지 모르겠지만 #을 null값으로 필터링 한다는 힌트를 얻을 수 있었다. 또한 개발자 관점에서 봐달라는 힌트를 통해 개발자 도구(F12)를 통해 확인해 보니 chatview.php?t=1&ni=[채팅번호]를 통해서 내가 입력한 data 값이 화면에 출력되는 듯 하여 ni파라미터를 조작하여 값을 출력 할 수 있을꺼 같다는 생각이 들었다. chatview.php?t=1&ni=[채팅번호] or 1을 입력하게 ..
Wargame - type confusion
2021. 9. 19. 21:22
워게임/Wargame.kr
간단한 비교 문제라고 설명에 나와 있다. 힌트는 제목과 같다 한다.. 문제를 들어가서 소스보기를 보니 '==' 비교 구문이 보였다. wargame에서 보는 흔한 loose compare 문제인듯 하여 바로 시도해보자. test로 'test'값을 보내보니 위의 소스코드 처럼 json파라미터를 통해서 key 값을 받아와서 $key에 넣는 것을 확인할 수 있었다. 자세히 URL 디코더를 통해서 확인해 보면 {"key","test"}를 통해서 key 값이 넘어가는 것을 확인해 볼 수 있다. 그럼 아까 loose compare을 하기 때문에 key 값에 true를 넣어서 보내게 되면 flag 값을 확인해 볼 수 있을꺼 같다. 위와 같이 key 값에 true를 넣어 보내게 되면 flag 값을 얻을 수 있었다. 비교..
Wargame - tmitter
2021. 9. 19. 20:48
워게임/Wargame.kr
tmitter 문제를 보아하니 admin으로 로그인을 성공시켜야 하는 문제인거 같다. tmitter_user 테이블에 id와 ps가 char(32) 값으로 정해져있는것을 확인할 수 있다. 처음에 sql injection으로 생각하고 접근을 해보았는데 Login failed로 접근이 제한 되는 것을 확인하니 인젝션 관련 문제는 아닌거 같다. 그 다음 회원가입을 시도해보았다. 회원가입을 시도 할 때, admin은 이미 존재했고 우회를 시도해보았는데 특수문자 값이 모두 null로 치환되어 admin으로 인식하는 듯 보였다. 하지만, 처음 id 와 ps 값이 32자로 고정되어 있는것을 확인 할 수 있었는데 char라는 함수에 대해서 알아야 한다. char형은 고정 사이즈로 위와 같이 32자로 고정이 되어 있으면..
Wargame - pyc decompile
2021. 7. 5. 15:58
워게임/Wargame.kr
- 디컴파일 문제 - Start - 파이썬~, python~, 현재 시각, bughela.pyc 파일 - 외 특이사항은 보이지 않음 - bughela.pyc 파일 - .pyc파일에 대해 알아본 결과 간단히 파이썬 임시파일이라고 보면 될 것 같다. - 파이썬 언어로 작성된 코드를 컴파일하게 되면 실행파일이 생성되고 프로그램이 실행되는데, 이러한 컴파일 과정을 효율적으로 하기위해 임시파일을 생성하여 반복적인 작업을 줄인다고 한다. - 따라서 .pyc파일을 디컴파일 하면 파이썬 코드를 확인할 수 있다. - bughela.pyc (디컴파일) - 온라인 디컴파일러를 사용한 결과 위와 같은 코드 확인. - flag 는 http://wargame.kr:8080/pyc_decompile/?flag=FLAG - 여기서 ..
Wargame - fly me to the moon
2021. 7. 5. 15:15
워게임/Wargame.kr
- 치트방지 시스템을 우회하는 javascript 문제 - Start - 비행기 게임 - 시작하면 양 옆에서 공격을 하며 공격에 맞으면 게임이 종료되고, 31337점을 획득해야 한다는 문구가 나온다. - 정상적인 플레이로 31337점 획득이 불가능한 상황 - script를 확인 - 문제 내용답게 javascript로 작동하는 게임인데.. 스크립트가 난독화되어있다. - 난독화를 풀어서 해결하는 문제인듯 싶다.. - 난독화를 풀어야 하나 귀찮아 하던 도중 게임이 오버되면 브라우저에서 발생하는 요청메시지를 확인했다. - 게임이 오버되면 high-scores.php 페이지를 요청하며, post메소드로 변수 'token', 'score'를 전송한다. - 저 값을 조작하여 전송하면 될 듯하다. - 그런데 'toke..
Wargame - login filtering
2021. 6. 28. 07:03
워게임/Wargame.kr
- 필터링 우회 문제 - Start - get source - guest 계정과 blueeh4g 계정이 있는 것을 확인. - get source-1 코드에서 sql 쿼리 이후 key를 얻기 위한 과정을 보면 1) DB의 쿼리 결과 id가 존재해야 함 2) 입력한 id가 guest 와 blueh4g 문자열이 아니어야 함 - DB 쿼리 결과의 id를 확인하는 것이 아니고 내가 입력한 id를 확인하므로, - guest와 blueh4g 문자열을 입력하지 않고 DB에서 조회 결과가 나오게 하면 된다. - 간단하게 대문자로 입력 - id:GUEST
Wargame - QR CODE PUZZLE
2021. 6. 25. 16:48
워게임/Wargame.kr
- 자바스크립트 문제.. - Start - 단순한 QR코드 퍼즐 맞추기로 보인다. - 자바스크립트 코드를 확인해 보자. - 원본이미지를 jquey를 통해 퍼즐로 만드는 듯 하다. - jquey 코드에서 Solve 검색하여 문제 해결 함수 코드 확인 - pieces 의 'current'가 pieceIndex와 같으면 문제가 해결되는 것 같다. - Elements 확인 - 개발자 도구의 Elements를 확인하면 퍼즐의 조각마다 'current'와 index번호가 있는 것을 확인할 수 있다. - jquey 함수에서 퍼즐들의 'current' 가 0부터 34까지이어야 하므로 순서대로 바꾸어 보았다. - 결과는 원본 이미지(QR이미지)를 확인할 수 있었다... - 문제를 해결하면 플래그를 주는 줄 알았지만.. ..