[Webhacking.kr] old-07
2021. 9. 11. 04:00
Study/Web Hacking
https://min-zero.tistory.com/entry/webhackingkr-challengeold-old-06-1 Challenge7에 Admin page라는 글씨와 auth버튼, val이라는 변수가 있다. 아래 view-source를 누르면 소스코드를 확인할 수 있다.
[natas] Level 26 -> Level 27
2021. 8. 24. 19:31
Study/Web Hacking
: level 26 → level 27 http://natas27.natas.labs.overthewire.org Username과 Password를 받는 폼이 있다. Username과 Password를 올바르게 입력하면 DB table의 내용을 출력한다. Password가 틀리면 Wrong password for user: (username)이 출력된다. Username이 존재하지 않으면 입력한 값을 바탕으로 새로운 계정을 생성한다. natas27
[LOS] nightmare
2021. 8. 24. 19:30
Study/Web Hacking
nightmare 입장! nightmare에서는 pw파라미터만 사용하고 있다. 이번 query는 id가 admin이 아니어야 한다고 명시하고 있고, pw에 빈 문자열이 들어있다. 문제를 해결하기 위해서는 query의 결과로 id가 존재해야 하기 때문에 query를 참으로 만들기만 하면 된다. 그러기 위해 id부분을 주석처리하고, pw부분에서 1=1과 같은 payload를 삽입해서 query를 참으로 만들려고 했다. 문제는 pw 삽입 부분이 문자열이기 때문에 기존처럼 1=1 #을 사용하긴 어렵다. 여기서 MySQL의 auto type cast를 이용하면 참 쿼리를 만들 수 있다. 문자열과 숫자를 비교하게 되면 문자열을 0으로 변환하여 비교하는 특성이 있기 때문에 pw를 ('')=0 형식으로 변환했다. 그런..
[natas] Level 25 -> Level 26
2021. 8. 22. 03:42
Study/Web Hacking
: level 25 → level 26 http://natas26.natas.labs.overthewire.org natas26은 4가지의 값을 입력받는 폼이 존재한다. 이 값들이 어떻게 쓰이는지 소스코드를 통해 확인했다.
[LOS] zombie assassin
2021. 8. 19. 15:28
Study/Web Hacking
zombie assassin 입장! 이번 단계는 id와 pw 모두 query에 포함된다. 특별히 달라진 점은 addslashes()를 적용시킨 후에 strrev() 함수가 추가된 것이다. strrev함수는 인자를 거꾸로 반대로 반환하는 함수이므로 입력한 payload가 반대로 적용된다. zombie assassin을 clear하려면 result['id']가 존재해야 하므로 query를 참으로 만들기만 하면 된다. 이전 단계처럼 \문자를 사용해서 id의 '를 일반 문자로 변환하고 pw의 '까지 id의 값으로 인식시키는 방법을 사용해봤다. 그러기 위해서 \를 id에 넣으려고 했지만 addslashes() 때문에 \가 \\로 escape되면서 id값의 인식 범위를 변경하지 못했다. addslashes()를 활..
[natas] Level 24 -> Level 25
2021. 8. 9. 22:50
Study/Web Hacking
: level 24 → level 25 http://natas25.natas.labs.overthewire.org natas25 화면이다. 어떤 글귀와 language 선택 박스가 있다. 바로 소스코드를 확인해보자. natas25 language View sourcecode 이번엔 소스코드가 좀 있는 편인데 필요한 부분을 천천히 훑어봤다. 먼저 아래쪽에서 호출되는 setLanguage 함수를 살펴봤다. lang 파라미터를 safeinclude함수의 인자로 전달하고 있다. safeinclude 함수를 살펴보자. 해당 함수의 매개변수를 보니 lang의 값이 filename으로 사용되는 것 같다. 그리고 filename에 ../와 natas_webpass를 필터링하는 것을 확인할 수 있다. 하지만 ../같은 ..
[LOS] succubus
2021. 8. 9. 21:42
Study/Web Hacking
succubus 입장! succubus 화면이다. id와 pw를 query에 삽입하고 있고 prob, _, ., (, ), '를 필터링하고 있다. 이번 문제에서도 '를 이용해서 앞을 막고 뒤에 새로운 쿼리를 작성할 수 없다. 대신에 \문자를 사용해서 query에 이미 작성된 '를 일반 문자 취급할 수 있다. id에 \를 대입한다면 id='\' and pw =''이 되면서 안쪽 내용이 문자열로 취급된다. 이후에 pw에 or 1=1#를 삽입한다면 참 쿼리로 바뀌면서 id를 얻어올 수 있게 된다. 최종적으로 아래와 같이 파라미터를 작성할 수 있다. ?id=\&pw= or 1=1# succubus 해결!
[LOS] assassin
2021. 8. 2. 14:35
Study/Web Hacking
assassin 입장! 이번 문제는 pw 하나만 입력받고 있다. 그리고 필터링도 싱글쿼터 하나다. 싱글쿼터가 필터링되고 있기 때문에 앞의 query를 '로 막고 새로운 query를 작성하는 방법은 사용할 수 없다. 즉 주어진 like문을 활용해서 해결해야 한다. admin의 password를 알아내야 admin id를 select할 수 있는데 like를 적절히 활용하면 모든 password를 알아낼 필요는 없다. ex) like '김%' → 김으로 시작하는 문자열 like '%김%' → 중간에 김이 있는 문자열 like '%김' → 김으로 끝나는 문자열 위 특성을 이용해 password의 앞머리 문자만 알아내면 admin id를 select할 수 있다. - password length 더보기 import..
[natas] Level 23 -> Level 24
2021. 8. 2. 12:35
Study/Web Hacking
: level 23 → level 24 http://natas24.natas.labs.overthewire.org natas24 화면이다. password를 입력하는 form이 있다. 소스코드를 확인해보자. natas24 Password: View sourcecode 이번에도 php 소스코드가 매우 짧다. 이번 level은 strcmp함수를 통해 입력값을 password와 비교해 인증하는 방식이다. 이외에 중요해 보이는 코드는 존재하지 않는 것 같았다. 다음 level로 넘어가기 위해서는 password를 입력해야 하는데 이 password를 알아내는게 문제이니 조금 당황했다. 아무래도 직접 password를 입력하는 것 외에 다른 방법이 있는 것 같은데 중요해 보이는 코드가 strcmp함수밖에 없으니 ..