MongoDB (MongoDB Injection)
Web/Web Hacking Techniques
MongoDB란?MongoDB는 문서 지향 NoSQL 데이터베이스로, 일반적으로 사용되는 관계형 데이터베이스인 RDBMS와 달리 스키마가 없거나 느슨한 스키마를 가지며 JSON 형태로 데이터를 저장하는 BSON(Binary JSON) 형식을 사용한다MongoDB의 주요 특징특징 설명NoSQL 기반스키마 없는 구조로 데이터 유연성과 확장성이 뛰어남문서 지향데이터를 문서(Document) 형태로 저장하며 JSON 유사 구조BSON 포맷바이너리 JSON으로 데이터를 저장하여 속도와 효율성 증가수평적 확장성Sharding 및 복제(Replication)를 통해 분산 확장 지원인덱싱 및 성능효율적인 인덱스 구조로 빠른 쿼리 처리 가능복제 및 고가용성Replica Set을 통해 장애 대비와 고가용성 확보MongoD..
[Load of SQL Injection] LOS - iron_golem(21단계)
WriteUP
21단계 = iron_golem 소스코드 해당 소스코드를 보면 이전문제와 다르게 추가적으로 적용된 필터링으로는 sleep, benchmark가 필터링되어 있다. 이는 Time based SQL Injection은 불가능하게 하기 위함으로 추측된다. 이번문제는 참값을 입력해도 참 거짓이 구분이 되지 않는다. 이럴 경우 사용할 수 있는 게 1. Time Based SQL Injection 2. Error Based SQL Injection 두 종류의 인젝션을 사용할 수 있는데 필터에서도 보았듯이 1번 해결법 Time Based SQL Injection은 사용불가다. 코드를 자세히 보면 즉 에러가 발생 시 에러페이지를 출력시켜 준다. 2번 해결법인 Error Based SQL Injection을 사용하면 될 ..
[Load of SQL Injection] LOS - xavis(19단계)
WriteUP
19단계 = xvais 소스코드 이번문제에서는 이상하리만큼 필터링되는 게 없으며, regex와 like가 필터링되고 있다. 이번 문제의 의도를 파악하기 힘든부분이었으며, 해당 문제에서 많은 걸 배우게 되었다. 우선 기존문제들과 동일하게 입력값과 db저장된값을 비교하므로, Blind SQL Injection을 이요하면 될 것이다. 정상적으로 구해지는 거 같은데 불안한 기분이 맴돌았다.. 늘 그래왔듯 패스워드길이와 문자열을 추출하기위해 파이썬코드를 작성하여 추출하려 시도하였지만 패스워드의 길이는 12자리인 걸 확인 후 문자열이 구해지지 않았다.... 우선 패스워드의 길이는 12자리였다. 파이썬 코드의 오류인가 싶어 아무리봐도 오류코드를 찾지 못하여 직접 URL로 값을 확인해본 결과 필터도 걸려있지 않는데 A..
[Load of SQL Injection] LOS - DARKKNIGHT(12단계)
WriteUP
12단계 = DARKKNIGHT 소스코드 이번문제에서는 넘겨줘야 할 파라미터값이 pw, no 두 가지로 보인다. 필터링되는 값을 확인해보면 pw 파라미터에서 '을 필터링하며, no파라미터에서 ', substr, ascii, = 를 필터링하고 있다. 이전 문제에서 사용한 것들을 잘 조합해서 사용하면 무난하게 우회가 가능할 거 같다. 우선 '를 필터링하여 문자열을 필터링하고 있다. 이럴 경우 id = 'admin'이 안되지만, My SQL에서는 아스키코드값인 16진수로 표현할 경우 문자열로 인식이 가능하다. 또한 no에서의 substr은 substrin(), mid() , left(), light()등 다양한 함수로 우회가 가능하다. ascii()는 ord(), hex()등으로 우회가 가능하다. =은 이제 ..