html 코드를 보니깐 저 O가 1600px까지 가면은 무슨 주소로 접속한다. 그리고 Goal이라고 되어있는걸 보니 저 O를 goal까지 옮겨야 되는거 같다. 한번 클릭하면 1픽셀씩 가니 대충 1600번 반복해서 눌러주면 풀릴거다. 그리고 다른 풀이를 보니 저 O를 아얘 스크립트에서 1600px로 이동시키거나 버프스위트를 이용해 1px가는걸 1600px로 바꾸는 방법도 있다 한다.
view-source 코드를 보면 처음에 모든 에러를 화면에 표시하게 해줬으니 이 에러를 이용해서 뭔가 해주어야 한다. 처음에 여러 에러 예를 들어, 특수문자만 사용한 파일을 업로드 해준다던지 등 해줬지만 아무것도 안나와서 여러 파일 에러를 찾아봤다. 여러 에러 중 파일 이름이 260자가 넘으면 에러가 난다는것을 알았고 버프스위트를 이용해 파일이름을 260자가 넘도록 설정해 주었다. ./4b0e87fef7b5e8ba83894970c9806042e5d6ec9a 이 디렉토리에 파일을 저장한다는 것을 확인했고 이 디렉토리에 저장된 파일 중 하나를 GET요청 해보면은 FLAG를 얻을 수 있다.
웹셸을 업로드하면 되는 문제이다. 예전에 리눅스에서 사용하던 webshell.php파일이 있어서 올려봤더니 올바르지 않은 파일 형식이라고 떴다. 그러면 .php를 .PHP로 바꿔서 해봤는데 리눅스에선 업로드가 되었다! 근데 윈도우에서 업로드하면 안돼서 찾아보니 원래 안되는게 맞다.. 웬만하면 정석으로 문제를 푸는게 맞기에 버프스위트를 이용해서 풀어보기로 했다. flag를 읽는 웹셸 파일을 만들고 버프스위트에서 image/png 파일로 형식을 숨겨서 보내줬다. 그 후 아래와같은 화면을 얻을 수 있는데 url을 클릭해보면 flag를 획득했다!
readme 파일을 클릭하면 access denied가 뜬다 대충 readme 파일에 flag가 있는거 같다. hi 파일에는 hello~ 라는 문자만 있고 해서 search에 hello를 쳐봤는데 guest 테이블 밖에 안나왔다. 그래서 flag{ 도 쳐봤는데 admin테이블만 나왔다. 그럼 flag{ 뒤의 문자열을 무차별 대입해서 찾아내기만 하면 된다! 버프스위트의 인트루더 기능을 사용해보고 싶었는데 시간이 너무 오래 걸리고 사용법도 익숙치 않아서 파이썬으로 넘어왔다. from requests import post host = "https://webhacking.kr/challenge/web-33/" password ="flag{" str = "acdefghiklmnostuy_" isStr = Fals..