
LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 48단계 소스코드이다. 파라미터로 id와 pw를 받으며 필요이상의 데이터 접근을 막기위한 필터링이 되어있다. id가 admin이며 pw를 mongodb내부의 값과 일치시키면 풀린다. pw값을 찾아 입력하면 된다. 이번문제는 배열에 함수의 리턴값을 집어넣는다. blind sql을 통해 문제를 풀어보자. blind sql을 사용하기 위한 조건이 충족되는지 확인해보자. 값이 참일 때 변화를 확인할 수 있다. 이제 pw의 길이를 추출해보자. mongodb는 length를 사용한다. 쿼리: ?pw='||obj.id=='admin'%26%26obj.pw.length=='8 비밀번호의 길이는 8이다. 이제 pw값 차례다. b4782..

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 47단계 소스코드이다. 이번에도 mogodb에서 작동한다. 파라미터는 id와 pw로 받으며 id가 admin이고 pw를 맞춰야 문제가 해결된다. 아마 이전 문제에서 푼 연산자를 통해 문제를 풀 수 있다 생각이 들었다. 수동으로 시도해보자. 어.. 1을 입력했는데 로그인이 되었다. 뭐지 2일 때는 로그인이 되지 않는다. 우연히 비밀번호 첫자리가 1이었던 거 같다. ㅋㅋ 바로 인젝터를 만들자. 비밀번호의 길이는 따로 알아내지 않아도 상관없다. 1588f5a3이 추출된 후 같은 값만 출력되기 때문에 알 수 있다. 문제 해결~ 시행착오 1. mongodb에서도 칼럼 값에 연산자를 사용하여 값을 추출해낼 수 있다. 2. 인젝터의..

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 46단계 소스코드이다. 기존과 다른 방법으로 파라미터를 입력받는다. mongodb 서버에서 진행된다. mongodb는 Nosql db이다. id가 admin일 때 문제는 해결되는 조건이다. id를 admin으로 맞춰주고 쿼리를 닫으면 풀릴 거라 생각했다. 소스코드 어디에도 필터링해주는 부분을 찾을 수 없는데 더블 쿼터가 필터링당했다. 아마도 mongodb는 기본적으로 더블 쿼터를 필터링하는 것 같다. mongodb injection방법에 대해 검색하다 보니 연산자에서 힌트를 얻을 수 있었다. mongodb의 연산자 - $eq // = - $ne // != - $gt // > - $gte // >= - $lt //

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 45단계 소스코드이다. id와 pw를 파라미터로 받고 기본적인 필터링이 되어있다. 그리고 pw가 krakenFlag와 일치하면 문제는 해결되지만 익숙한 주석이 보인다. flag는 member에 없으니 다른 곳에서 찾으란 뜻이다. 그럼 진행해보자. 쿼리 : ?id='or id>'a'--+- guest 이외의 id를 찾아봤지만 guest 하나밖에 나오지 않았다. 따라서 admin은 다른 테이블에 있다는 걸 확인했다. 이번 문제에서는 master가 필터링되었기에 메타데이터에 접근하는 또 다른 방식인 sysobjects를 사용한다. 테이블 이름을 조회해보자. 쿼리: ?id='union select name from sysobj..

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 44단계 소스코드이다. 이번 문제는 파라미터를 query와 pw로 받는다. 그리고 아스키코드 1~32까지 사용이 불가능 해졌다. 이는 공백을 필터링하겠다는 뜻이다. 또한 ; ( / 가 새로이 필터링되었다. pw가 admin의 pw값과 일치하면 문제가 해결된다. 공백을 우회하는 방법에 대해 찾아보자 1. [] // 대괄호 2. "" // 더블 쿼터 3. '' // 싱글 쿼터 이번 문제에서는 필터링된 항목을 제외하면 대괄호와 쿼터를 사용하여 공백을 우회할 수 있다. 대괄호가 가장 적절하므로 대괄호를 채택한다. 쿼리 : ?query=[pw]from[prob_mummy] Hello anonymous가 출력되었다. 정상적으로 s..

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 43단계 소스코드이다. id와 pw를 파라미터로 받으며 메타데이터에 접근하지 못하도록 필터링 되어있다. 이번엔 에러를 표출하지않는다. 따라서 에러기반 주입은 진행할 수 없다. 하지만 필터링에서 시간기반 명령어들은 필터링 되어있지 않기에 힌트정도는 얻을 수 있다. 입력받은 pw와 id가admin인 pw가 일치하면 문제는 해결된다. 이제 풀어보자 이번에도 문제는 mssql환경에서 진행된다. 일단 pw길이부터 추출해보자 쿼리: ?pw='if(len((select pw from prob_yeti where id='admin'))=8)waitfor delay'0:0:3'--+- pw의 길이는 8이다. 하지만 이 과정에서 오랜 시..

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 42단계 소스코드이다. id와 pw를 파라미터로 받고 에러를 출력해주며 메타데이터와 시간 기반 주입을 하지 못하게 필터링되어있다. 주석은 5번째 칼럼을 해킹해야 한다고 알려준다. pw가 result쿼리의 '4'와 같으면 문제는 해결이 된다. 그리고 이번 문제 또한 에러를 출력해준다. 이 문제도 여러 시도를 했지만 모두 실패했다. 그래서 또 인터넷을 참고했다... 이번 문제의 해결은 group by 절에 가장 큰 지분이 있다. 바로 알아보자. 이번 문제의 칼럼의 수는 5개이다. (6 이상에서는 에러 페이지를 호출한다.) 이제 group by 절을 사용할 때이다. group by는 레코드 조회 시 각 레코드를 하나의 그룹으..
- Total
- Today
- Yesterday
- 김영한 실전 자바 기초
- lord of sql
- 상품을 구매한 회원 비율 구하기 파이썬
- 백준
- 프로그래머스
- 김영한 실전 자바 중급
- 백준 피보나치
- 기술스택
- webhacking.kr
- static
- los 15
- los 15단계
- 김영한
- java
- Los
- 상속
- 김영한 실전 자바 기본
- 프로그래머스 상품을 구매한 회원 비율 구하기
- samron
- spring
- 스프링
- samron3
- extends
- 코딩테스트
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- 자바
- 백준 피보나치 수열
- 코딩테스트 준비
- zixem
- ys.k
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |