[LOS] bugbear
2021. 7. 20. 17:03
Study/Web Hacking
bugbear 입장! bugbear도 똑같이 admin의 password를 알아내야 하는 문제다. 이번 문제는 no에서 싱글쿼터와 함수명 뿐만 아니라 or, and, 공백, like까지 필터링하고 있다. or와 and는 ||와 &&를 대체로 쓰면되고, 공백은 %0a를 사용하여 우회할 수 있다. like같은 경우 등호 문자를 대체하여 쓴 것이었기 때문에 등호 문자 필터링을 우회할 수 있는 다른 방법을 사용하면 된다. 등호문자 필터링 우회 방법은 아래와 같다. ① LIKE 연산자 - id like "admin" ② IN 연산자 - id in ("admin") ③ instr(string $str, string $substr) - instr(id, "admin") ④ 부등호 () - length(pw)..
[natas] Level 21 -> Level 22
2021. 7. 20. 16:13
Study/Web Hacking
: level 21 → level 22 http://natas22.natas.labs.overthewire.org natas22 화면이다. View sourcecode 링크 외에는 아무것도 없다. 소스코드를 확인해보자. natas22 View sourcecode {"mode":"full","isActive":false} 이번 코드에는 2가지의 if문이 존재한다. 두 if문은 모두 $_GET['revelio']의 존재유무를 확인하고 있다. 차이점은 첫 번째 if문에서는 $_SESSION['admin']을 검증하고 있다는 거다. $_SESSION['admin']=1이 아니라면 새로운 페이지로 redirection한다. 두 번째 if문만 보면 revelio를 get방식으로 전달만하면 natas23의 passw..
[LOS] darkknight
2021. 7. 17. 14:21
Study/Web Hacking
darkknight 입장! 위 사진은 darkknight 시작화면이다. 아래 php 소스코드에서 해당 문제를 해결하기 위한 조건을 찾아봤다. query로 얻어온 pw와 입력한 pw가 같아야 문제를 해결할 수 있다. 그런데 query를 잘 보면 id='admin'과 pw가 and로 묶여있는 것을 알 수 있다. 즉 query에서 얻어온 pw는 admin의 pw다. GET방법으로 전달하는 pw가 admin의 pw와 같아야 하므로 우리는 admin의 pw를 알아내야 한다. 먼저 pw의 길이를 알아내야 한다. 아래 소스코드를 실행하면 pw의 길이를 구할 수 있다. (no에서 싱글쿼터와 =을 필터링하고 있기 때문에 대체로 더블쿼터와 like를 사용) import requests url = "https://los.r..
[natas] Level 20 -> Level 21
2021. 7. 17. 13:45
Study/Web Hacking
: level 20 → level 21 http://natas21.natas.labs.overthewire.org 위 사진은 natas21의 메인페이지다. 화면에 또다른 사이트로 가는 링크가 하나 보인다. 링크로 이동하기 전에 소스코드를 먼저 살펴보자. natas21 Note: this website is colocated with http://natas21-experimenter.natas.labs.overthewire.org View sourcecode {"mode":"full","isActive":false} natas21의 소스코드는 이전 level과는 달리 간략해보인다. 중간에 있는 print_credentials함수 하나만 실행되는 듯 하다. 해당 함수는 $_SESSION['admin']의 값..
[LOS] golem
2021. 7. 11. 08:08
Study/Web Hacking
golem 입장! 이번 문제를 해결하기 위해서는 admin의 pw를 알아내야 한다. 소스코드에 주어진 query는 id만을 가져오게 되어있다. 대신 Hello admin이라는 문자열을 통해 쿼리의 참 거짓을 알아낼 수 있다. 즉 Blind SQL Injection으로 해결할 수 있다. 먼저 password의 길이를 알아내야 한다. password의 길이는 8이다. 이제 admin의 pw를 알아내기 위한 자동화 프로그램이 필요하다. 자동화 프로그램 소스코드는 아래와 같다. import requests url = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php" cookies={'PHPSESSID':'tt2tomujp7112o1..
[natas] Level 19 -> Level 20
2021. 7. 11. 05:54
Study/Web Hacking
: level 19 → level 20 http://natas20.natas.labs.overthewire.org natas20의 화면이다. natas21의 password를 알아내려면 admin으로 로그인해야 한다. 소스코드를 살펴보자. natas20
[LOS] skeleton
2021. 6. 27. 21:13
Study/Web Hacking
skeleton 입장! 이번 문제는 뒤에 주석처리만 잘해주면 되는 문제다. query 마지막에 and 1=0 때문에 해당 쿼리는 항상 거짓이 된다. 따라서 pw 마지막에 주석을 달아서 and 1=0 부분을 무효화 해야 한다. payload는 다음과 같이 작성할 수 있다. ?pw=' or id='admin'# → ?pw=%27%20or%20id=%27admin%27%23 skeleton 해결!
[LOS] vampire
2021. 6. 27. 21:12
Study/Web Hacking
vampire 입장! 이번 문제는 str_replace 함수를 이용해서 해결하는 문제다. 이 문제에서 str_replace 함수는 3번째 인자인 $_GET[id]에서 1번째 인자인 "admin"을 찾아 2번째 인자인 "" 빈 문자열로 바꿔준다. 따라서 admin사이에 admin을 넣어주면 가운데 있는 admin은 빈 문자열이 되면서 양쪽에 있는 값들이 합쳐져 admin이 만들어진다. adadminmin → admin payload는 다음과 같다. ?id=adadminmin vampire 해결!
[natas] Level 18 -> Level 19
2021. 6. 27. 19:52
Study/Web Hacking
: level 18 → level 19 http://natas19.natas.labs.overthewire.org natas19는 natas18과 소스코드는 동일하다. 단, 세션 ID의 길이가 좀 더 길어졌다고 한다. 세션 ID의 형태가 어떻게 바뀌었는지 확인하기 위해 아래처럼 3개의 세션값을 받아왔다. 3232372d61646d696e 3337382d61646d696e 3237372d61646d696e 3개의 세션값을 받아온 결과 2d61646d696e는 반복되고, 앞은 3n형식으로 이루어져 있다는 것을 알게되었다. 이 패턴을 기반으로 natas20 password를 알아내보자. 이번에도 역시 자동화프로그램을 사용해서 2d61646d696e 앞의 숫자들을 조합하여 해결했다. 자동화프로그램은 다음과 같다..