server(15)
-
Web - Server | SQL injection - String
이번 문제는 외국 Write-Up을 참고했습니다. https://exp-blog.com/safe/ctf/rootme/web-server/sql-injection-string/ 【Root-Me】 SQL injection - string | 眈眈探求 发布日期: 2019-03-17 更新日期: 2022-05-22 文章字数: 361 阅读时长: 1 分 阅读次数: exp-blog.com Search page와 Login page 중에 어느 페이지에서 sqli가 터질지 잘 몰랐습니다. 그래서 직접 sql 구문을 하나하나 넣어본 결과, Search page에서 sqli 취약점이 발생한다는 것을 확인했습니다. Search page에 일부러 잘못된 sql 구문을 삽입하여 Warning을 띄워봤습니다. DB로 SQLite3을..
2022.06.17 -
Web - Server | SQL injection - Authentification - GBK
힌트에서 뜬금없이 중국어를 할 수 있냐고 물어보네요..? 평범한 sqli 문제는 아니다 싶어, 구글에 GBK를 검색해봤습니다. GBK는 중국어를 표현하는 멀티 바이트 인코딩 방식이었습니다. 아무래도 멀티바이트 취약점을 활용해서 sqli를 시도하는 문제인 것 같습니다. 멀티 바이트 취약점을 이용하기 위해 프록시 툴인 Burp Suite를 열어서 request를 보내줬습니다. 메인 페이지가 변하면서 바로 FLAG를 획득했습니다! :D
2022.06.16 -
Web - Server | SQL injection - Authentification
기본적인 로그인 폼이 나옵니다. 별다른 정보가 주어지지 않았으니 기본적인 sql 구문을 넣어서 sqli를 시도해보겠습니다. Login에는 admin, Password에는 'or1=1--을 넣어줬습니다. 에러가 떴네요..? 'or1=1--이 아니라 'or 1=1--을 넣어줘야 하나 봅니다. 다시 고쳐서 넣어보겠습니다. sql injection에 성공했습니다. user1의 password가 화면에 나온 걸 확인할 수 있었습니다. 하지만 이 문제에서 요구하는 건 admin의 패스워드이니, 쿼리문을 조금 바꿔서 집어넣어 보겠습니다. admin'or'1'='1을 Login에 넣고, Password에는 아무 값이나 넣고 connect를 눌러줬습니다.
2022.06.15 -
Web - Server | File upload - Double extensions
메인 페이지에는 여러 가지 아이콘이 보이고, 상단에는 바가 있습니다. 바에 있는 upload를 눌러보겠습니다. upload your photo! 라고 되어있는 걸 보니 이미지 파일이 아니면 파일 업로드에 실패할 것 같습니다. 문제 파일에서 .password라는 힌트를 줬으니 이를 이용해 웹쉘 코드를 짜 보겠습니다. 위와 같이 웹쉘 코드를 짜주고 파일 이름은 upload.php.png로 해줬습니다. php 필터링을 우회하기 위해 끝에 .png를 붙여준 것입니다! 이제 이 파일을 Upload 해보겠습니다. 다행히도 바로 들어갔네요. 주어진 링크를 따라가서 ../../../.passwd를 열어보겠습니다. EZ :>
2022.06.14 -
Web - Server | HTTP - IP restriction bypass
Your IP ::ffff:220.116.191.29 do not belong to the LAN. Intranet Login: Password: You should authenticate because you're not on the LAN. 메인 페이지 소스코드부터 가져와봤습니다. 웹페이지의 맨 위를 보니 사용자의 IP가 나와있고, 이 IP가 사설 대역 IP가 아니라고 써져있습니다. IP를 사설 대역으로 속여야만 FLAG를 얻을 수 있을 것 같습니다. https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For X-Forwarded-For - HTTP | MDN X-Forwarded-For (XFF) 헤더는 HTTP 프록시나 로드 밸런..
2022.06.11 -
Web - Server | HTTP - POST
Give a try! 버튼을 눌러서 Best Score인 999999를 넘기면 되는 문제 같습니다. Give a try! 버튼을 눌러봤더니 188150이 나왔네요. 아무래도 랜덤으로 값을 출력해주는 것 같으니, 소스코드를 뜯어보겠습니다. 역시나 .random()을 써서 랜덤 값을 출력해주고 있었습니다. score라는 변수에 hidden 속성으로 값이 들어가네요. Burp Suite를 켜서 score 변수가 존재하는지 확인해보겠습니다. score 변수가 존재했습니다. 아까 버튼을 눌렀을 때 나왔던 숫자가 그대로 들어가 있는 걸 보니, 이 변수의 값을 9999999로 바꾸면 될 것 같습니다. FLAG가 나왔습니다.
2022.06.10