39번 문제에 들어가보니까 text 입력창이 나왔다.



코드를 보니 주석으로 index.phps 라고 적혀있었고, 그곳으로 들어가보니 소스가 있었다.



대충 해석을 해보니 id 입력값에 \\가 있으면 없애주고 '를 ''로 바꿔준다.

바꾼 값을 처음부터 15글자를 잘라 쿼리문에 붙여서 실행했을때의 결과를 배열로 저장해서,

배열의 첫번째 값이 good 이면 문제는 풀리게 된다.


mysql_query() 는 지정한 DB 에 하나의 질의를 해서 성공한다면 결과값을 오류시 false 값을 반환하는 함수이다.

mysql_fetch_array() 는 mysql_query() 를 통한 결과값을 배열로 저장하는 함수이다.

substr() 은 문자열을 잘라 반환하는 함수이다.


text field 에 아무거나 써봐도 ' 로 닫혀있지 않아 아래와 같은 오류가 나온다.



그래서 good' 과 같은 형식으로 써야하는데 '를 쓰면 ''가 되어 ' 개수가 또 맞지 않게 된다.

그런데 코드를 잘 살펴보며 15번째까지 자른다고 나왔있다.

다른 관점에서 생각해보면 16번째부터 읽지 않는다는 소리이므로 15번째에 '를 넣으면 ''로 바뀌어도 '까지만 읽어서 ' 개수가 맞게 된다.

따라서 아래와 같이 입력해보았다.




성공!



\\ 는 왜 없애는 건지 모르겠다. 특수문자 처리 못하게 하려고 없애는거면 \ 를 없애야하지 않나?

아무튼 다른 방식으로 몇번 해봤는데 일단 id 에 입력되는게 good 이 아니더라도 풀리긴 풀렸다.


특수문자 처리에 대해 알아보니 ' 는 DB 에 ' 가 들어가게 되어서 오류가 발생할 수 있으니 \' 를 통해 ' 를 문자열 처리하는 거라고 했다.

입력할 때는 \' 로 입력이 되지만 DB 에서 보이는 내용은 ' 라고 한다.


그래서 다음과 같이 시도해봤다.


처음으로는 마찬가지로 15번째에 ' 를 입력하는데 14번째에 \ 를 입력해서 특수문자 처리가 되도록 해봤다.


안 된다. good         \' 가 good         \''가 되지만 15번째에서 잘려 good         \'가 되고,

DB 에는 ' 가 문자열 처리되어 good         ' 로 입력되지만 닫는 ' 가 없어서 안 된다고 생각했다.



그렇다면 14번째에 ' 를 입력하고 13번째에 \ 를 입력한다면 어떻게 될까?



솔직히 나는 될 거라고 생각했지만 안 됬다. good        \' 가 good        \'' 가 되고 15번째에서 잘려도 그대로이기에

DB 에는 good        ' 로 입력되고, 닫는 문자열 ' 도 있어서 성공할 줄 알았지만 실패했다. 


'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 10번 문제  (0) 2018.09.26
Webhacking.kr 24번 문제  (0) 2018.09.21
Webhacking.kr 5번 문제  (0) 2018.09.21
Suninatas 23번 문제  (0) 2018.09.20
Suninatas 22번 문제  (0) 2018.09.20


문제에 들어가니 위와 같은 화면이 나왔다.




코드를 열어보니 onclick 시 왼쪽으로 1만큼 가고 800만큼 간다면 ?go=800 으로 이동한다.





URL 에 위와 같이 입력해보니 아래와 같이 no hack 이라고 나온다. ( 어떤 값을 입력하든지 마찬가지 이다. )




눌러서 이동시켜보려고 했는데 이동이 안 된다.

뭐지 하면서 고민하면서 코드 다시 한 번 보는데 문제되는 부분이 없다.

찾아보니 크롬에서는 안 된다고 한다.


그래서 사파리로 들어가서 다음의 코드를



위와 같이 한 번 누를때 1만큼 가는 게 아니라 800만큼 가도록 수정했다.



성공!



'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 39번 문제  (0) 2018.09.27
Webhacking.kr 24번 문제  (0) 2018.09.21
Webhacking.kr 5번 문제  (0) 2018.09.21
Suninatas 23번 문제  (0) 2018.09.20
Suninatas 22번 문제  (0) 2018.09.20

문제에 들어가니 위와 같은 화면이 나오고, 코드를 열어보니 주석에 소스가 index.phps 에 있다고 합니다.



index.phps 에 들어가보니 다음과 같은 코드가 있었습니다.


REMOTE_ADDR 이란 PHP 에서 사용자가 현재 페이지에서 보고 있는 시스템의 IP 주소를 나타냅니다.


extract 함수는 배열의 키값을 변수화 해주는 함수라고 하고, 대충 해석해보니


REMOTE_ADDR 이 없다면 서버에서 설정해주는 것 같고, 쿠키에 REMOTE_ADDR 이 있을 때


ip 의 값에서 12,7.,0.을 지우라는 소리 같습니다.



solve 함수가 있는 조건문을 보니 ip를 127.0.0.1 을 만들라는 것 같군요.


처음에는 되나 싶어서 아래와 같은 방법을 써봤는데 프록시의 정의조차 생각하지 않고 일단 해보는 나, 대단하군요.



네, 당연히 안 됩니다.


REMOTE_ADDR 라는 쿠키를 만들어주고 127.0.0.1 이 될 값을 넣어줍시다.



Suninatas 1번 문제처럼 replace() function 생각해서 127.0.0.1 를 결과값으로 만들면 됩니다.




위와 같이 입력해주면!


성공했습니다!



쿠키에다가 아무 생각 없이 127.0.0.1 이 될 값을 입력했는데 오늘 다시 해보다가 


이 값에 따라서 표에 나오는 값이 달라짐을 확인할 수 있습니다.




이 문제를 풀고 webhacking.kr 사이트에 들어가니 계속 wrong ip! 127.0.0.1 이 뜬다.


Edit this cookie 를 통해 쿠키를 지워도 계속 뜬다.


인터넷 사용기록, 호스팅된 데이터들 다 삭제했더니 겨우 들어가졌다.



'Hacking > Web Hacking' 카테고리의 다른 글

Webhacking.kr 39번 문제  (0) 2018.09.27
Webhacking.kr 10번 문제  (0) 2018.09.26
Webhacking.kr 5번 문제  (0) 2018.09.21
Suninatas 23번 문제  (0) 2018.09.20
Suninatas 22번 문제  (0) 2018.09.20