네모네모 로직이라는 게임이 나오게 됩니다.

해당 칸을 클릭하면 검은색으로 변하게 되고 문제를 풀면 넘어갈 수 있습니다.



성..? 



넘어가면 다음과 같은 입력 창이 나오게 되고, URL에 많은 파라미터 값들이 추가 됩니다.

   http://webhacking.kr/challenge/web/web-03/index.php?        

   _1=1&_2=0&_3=1&_4=0&_5=1&_6=0&_7=0&_8=0&_9=0&_10=0&_11=0&_12=1&_13=1&_14=1&_15=0&_16=0

   &_17=1&_18=0&_19=1&_20=0&_21=1&_22=1&_23=1&_24=1&_25=1&_answer=1010100000011100101011111




아무 값이나 입력하면 로직에 대한 값과 IP가 입력됩니다.

무슨 값을 입력해도 해당 형식을 유지하고 특별한 것이 없어 보입니다.



그래서 소스를 확인해보니 hidden type으로 로직의 답을 보내고 있었습니다.


해당 값을 변화 해봤는데 특정 상황에서 no hack이라는 문구가 나오게 됩니다.

① 문자로 시작할 때

② or, and, = 등 특정 문자 필터링


또한, 잘못된 값을 입력하게 되면 query error가 나오게 되는 것을 보면 해당 지점이 문제를 해결할 수 있는 곳 같습니다.



이런 상황이 되면 항상 참을 만들어야 할 것 같아서 or를 사용해 봤지만 no hack이 나왔고, =도 필터링이 되었습니다.

그래서 1 || 1 like 1 를 입력했더니 인증키 값이 나왔습니다.


'WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob 59  (0) 2018.12.20
[webhacking.kr] prob 49  (0) 2018.12.19
[webhacking.kr] prob 36  (0) 2018.12.19
[webhacking.kr] prob 39  (0) 2018.12.19
[webhacking.kr] prob 53  (0) 2018.12.14

vi가 정전 되었다고 합니다.

정전은 보통 작동 중에 갑자기 전원이 나가서 발생하는 일인데

vi를 사용 중에 갑자기 꺼졌다고 생각하면 될 것 같습니다.



vi는 linux에서 사용하는 문서 편집기로 windows에 메모장과 비슷한 역할을 합니다.

하지만 vi를 사용할 때 갑작스럽게 종료가 되면 swap 파일이라는 복구 파일이 생기게 됩니다.

해당 파일을 이용해서 하던 작업을 잃지 않고 복구 할 수 있게 됩니다.


처음 문제 페이지의 파일 명은 index.php입니다.

이 파일을 vi로 사용해서 편집 중에 정전이 났다고 생각하면 .index.php.swp 라는 파일을 만들었을 것입니다.

하지만 해당 문제는 해결되지 않고, 고장 났거나 해당 파일이 지워진 것 같습니다.


'WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob 49  (0) 2018.12.19
[webhacking.kr] prob 3  (0) 2018.12.19
[webhacking.kr] prob 39  (0) 2018.12.19
[webhacking.kr] prob 53  (0) 2018.12.14
[webhacking.kr] prob 52  (0) 2018.12.14



id부분에 '(싱글쿼터)가 한 개 부족해서 오류가 납니다.

하지만 str_replace()를 통해서 싱글쿼터가 입력되면 두 개로 증가하고, \도 지워지기 때문에 Query를 완성할 수 없습니다.



값을 입력하면 다음과 같은 Error 메시지가 나오게 됩니다.



쿼리를 올바르게 완성할 수 있다면 해결할 수 있는 문제입니다.

중간에 보면 substr($_POST[id],0,15)는 문자열을 15개까지만 받게 만들고 그 이상은 버리게 됩니다.

그렇다면 마지막 15번째 문자가 '(싱글쿼터)가 되면 15,16번째가 ''로 새로 생긴 '(싱글쿼터)는 사라지게 됩니다.


DB에서 문자열을 비교할 때 특정한 상황이 있습니다. 

'a' = 'a '를 입력하면 False가 나와야 하는데 True가 나오게 됩니다.

비교하는 값의 길이가 다르면 padding값으로 공백을 추가한다는 것입니다.


그렇기 때문에 admin         '를 입력해서 문제를 해결할 수 있습니다.



[참고]


MySQL에서 'a' = 'a '가 true로 평가된다?http://woowabros.github.io/study/2018/02/26/mysql-char-comparison.html

'WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob 3  (0) 2018.12.19
[webhacking.kr] prob 36  (0) 2018.12.19
[webhacking.kr] prob 53  (0) 2018.12.14
[webhacking.kr] prob 52  (0) 2018.12.14
[webhacking.kr] prob 25  (0) 2018.12.13

+ Recent posts