분류 전체보기(363)
-
web-ssrf 풀이
/img_viewer 페이지에 들어가 보겠습니다. 기본값으로 /static/dream.png라는 url이 들어있습니다. View를 눌러서 무슨 파일인지 확인해보겠습니다. 그냥 드림핵 로고 그림의 png 파일이었습니다. 소스코드에서 elif 부분을 보면 POST 형식으로 보내야 한다는 걸 알 수 있습니다. 이제 어떻게 flag.txt를 찾아야 할지 생각해봐야 하는데, 여기서 local_host 변수를 보면 host는 127.0.0.1로 고정입니다. 하지만 local_port 변수는 1500~1800 사이 범위에서 랜덤으로 주어집니다. 그렇기에 이 port를 중심으로 Brute force를 돌려서 문제를 해결하면 될 것 같습니다. 또한, 코드에서 elif 안에 있는 elif를 보면 127.0.0.1을 필터링..
2021.08.25 -
old-52 풀이
우선 메인 페이지에 admin page로 접속하는 부분이 있으니, 클릭해보겠습니다. 이런 팝업창이 뜨면서 로그인을 요구합니다. guest로 로그인 해봤자 별로 얻을건 없을 것 같으니 우선 취소 버튼을 누르겠습니다. 그러면 이렇게 view-source가 나타나게 되고, 소스코드를 볼 수 있게됩니다. 이 소스코드에서 주목해야할 부분은 아래와 같이 두 부분입니다. 페이지에 어떤 취약점이 있는지 알았으니, 다시 로그인 창을 열어 admin으로 로그인 해보겠습니다. (ID : admin'#) 이제 소스코드를 보면서 조건에 맞춰 URL query를 작성해보겠습니다. page=/admin/%20HTTP/1.1%0d%0aHost:%20webhacking.kr:10008%0d%0aCookie:%20PHPSESSID=n3..
2021.08.23 -
golem 풀이
이번 문제는 admin의 실제 pw를 알아내면 풀리는 문제입니다. 아무래도 Blind SQL Injection 문제 같습니다. 필터링하는 요소들을 보니 or, and, substr(, =의 4가지입니다. or이랑 and는 각각 ||, &&로 우회가 가능합니다. substr(, =은 어떻게 우회를 할지 생각이 나지 않아서 구글링을 좀 해봤습니다. https://m.blog.naver.com/xkdlffpshf/221368224853 PHP 필터링 우회기법 잘 알려지고 자주 쓰이는 연산자,함수는 필터링되기 마련이다. 그래서 php일때 필터링 우회기법을 여기다 ... blog.naver.com shirokawaii님 감사합니다...! 이제 pw의 길이부터 알아보도록 하겠습니다. 1부터 차례차레 브루트 포스 방..
2021.08.22 -
skeleton 풀이
id가 admin일 때 문제가 풀립니다. 현재 id는 guest인데, 그렇다면 pw 부분에서 id를 admin으로 변조하는 형식으로 문제를 풀어야 할 것 같습니다. 그런데 $query 부분을 보면 and 1=0이라는 구문이 적혀있습니다. 이 말은 즉슨, 맞는 쿼리문을 작성하더라도 전체 쿼리문이 false로 바뀐다는 뜻입니다. 그럼 이 부분은 주석처리를 하겠습니다. DB에서 사용되는 주석은 #, --, /**/의 세 가지가 있습니다. 저는 #이 사용하기 편하니 #을 사용하도록 하겠습니다. (#을 URL Encoding 하면 %23, '은 %27이 됩니다.) 그러면 쿼리문에 '||id='admin'#을 URL Encoding 한 형식으로 작성해주겠습니다. pw=%27||id=%27admin%27%23 and..
2021.08.22 -
vampire 풀이
코드 분석을 해보면 id가 admin일 때 문제가 풀립니다. 하지만 str_replace() 함수를 이용해서 id에 "admin"이 들어가 있으면 NULL 값으로 치환합니다. 어디선가 많이 본 패턴입니다! 이 문제의 의도는 "str_replace() 함수의 취약점을 이용하여 문제를 풀 수 있는가?"인 것 같습니다. 쿼리문에서 id 변수에 값을 줄 때 admin이 한 번 필터링 되더라도 admin이라는 문자열이 완성되도록 값을 주면 문제가 풀릴 것 같습니다. adadminmin 이렇게 값을 주면 밑줄이 쳐진 부분이 필터링 되더라도 남은 문자열이 합쳐서 admin이 되므로 문제가 풀립니다. 이전 문제보다 훨씬 간단하네요.
2021.08.21 -
blind-command 풀이
소스코드에서 두 번째 if를 보면 request의 method가 GET이 아니여야 os.system() 함수가 실행됩니다. 항상 GET, POST만 써서 생각나는 메소드가 POST 밖에 없는데 if문을 저렇게 작성을 해놓은걸 보면, POST 메소드가 아닌 다른 형식의 메소드가 있는 것 같습니다. https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/HEAD HEAD - HTTP | MDN HTTP HEAD 메서드는 특정 리소스를 GET 메서드로 요청했을 때 돌아올 헤더를 요청합니다. developer.mozilla.org HEAD 메소드를 사용해서 문제를 풀어보겠습니다. 이번 문제는 웹페이지가 저렇게 되어있는 관계로 버프 스위트를 사용해서 풀어야 할 것 같습니..
2021.08.18