
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. los를 모두 끝내고 어떤 사이트를 포스팅할까 고민하다 찾은 zixem이다. 본론으로 가자. 1단계 소스코드이다. 소스코드라기보다 웹페이지다. union기반 문제로 유저 이름과 버전을 출력시키면 된다. 쿼리: ?id=1 order by 4 union기반 문제들은 order by를 사용하여 칼럼수를 알아낸 후 union select로 칼럼수에 맞게끔 인젝션 하면 된다. 4에서는 오류가 났고 3에서는 오류 없이 정상 페이지가 출력되었다. 따로 사진을 첨부하지는 않겠다.. 칼럼수를 찾았으니 union select를 주입하자 쿼리: ?id=1 union select user(),@@version,3 엥.. 아무값도 출력되지 않는다. ..

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..
필자의 sql injection 독립성을 위해 작성하며, 글의 구성이 불완전하거나 내용이 사실과 다를 수 도 있다. 1. 버전 Mysql Mssql oracle @@version @@version v$version version() X X Mysql - select version() - select @@version Mssql - select @@version Oracle - select * from v$version 2. 스키마 객체 Mysql - information_schema // Mysql서버가 운영하는 모든 데이터가 저장되어있다. - current_user() // 현재 mysql서버에 접속한 유저 목록을 출력해준다. - table_name // information_schema.tables ..

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다. 44단계 소스코드이다. 이번 문제는 파라미터를 query와 pw로 받는다. 그리고 아스키코드 1~32까지 사용이 불가능 해졌다. 이는 공백을 필터링하겠다는 뜻이다. 또한 ; ( / 가 새로이 필터링되었다. pw가 admin의 pw값과 일치하면 문제가 해결된다. 공백을 우회하는 방법에 대해 찾아보자 1. [] // 대괄호 2. "" // 더블 쿼터 3. '' // 싱글 쿼터 이번 문제에서는 필터링된 항목을 제외하면 대괄호와 쿼터를 사용하여 공백을 우회할 수 있다. 대괄호가 가장 적절하므로 대괄호를 채택한다. 쿼리 : ?query=[pw]from[prob_mummy] Hello anonymous가 출력되었다. 정상적으로 s..
- Total
- Today
- Yesterday
- los 15단계
- 코딩테스트
- 백준 피보나치
- 김영한
- samron
- 백준
- Los
- 상품을 구매한 회원 비율 구하기 파이썬
- 코딩테스트 준비
- 자바
- 김영한 실전 자바 중급
- 프로그래머스 상품을 구매한 회원 비율 구하기
- lord of sql
- webhacking.kr
- 프로그래머스
- java
- 기술스택
- static
- spring
- extends
- 백준 피보나치 수열
- zixem
- ys.k
- 스프링
- 상속
- samron3
- 김영한 실전 자바 기본
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- los 15
- 김영한 실전 자바 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |