분류 전체보기

Web Hacking/LOS

Lord of SQL Injection - siren

mongo db 가 한 번 더 등장해주었다. Blind SQL Injection 을 수행해야 한다. 저번 연산자 중에서 하나 빼먹은 것이 있다. '$regex' 라는 친구다. 이 친구는 정규표현식을 이용하여 원하는 데이터와 비교할 수 있다. 자세한 내용은 아래에서 볼 수 있다. https://docs.mongodb.com/manual/reference/operator/query/regex/ MySQL에서는 like 문을 사용할 때, 'a'로 시작하는 문자열을 'a%'과 같이 작성하였다. NoSQL 에서는 정규표현식을 이용, 즉 '^a' 가 된다. 이외에도 위 문서를 보면 '$'는 특정 문자로 끝나는 문자열을 나타내기도 한다. 간단하게 테스트를 하나 해보자. 굳이 안 해도 되지만. id=admin&pw[$..

Web Hacking/LOS

Lord of SQL Injection - revenant

이번에도 mssql 환경이다. 필터링은 이전 문제와 비슷한 것 같다. Error 처리하는 부분이 있어서 이번 문제도 Error Based SQL Injection 일 수도 있겠다. 마지막 solve 부분에 다음과 같은 주석이 달려있다. // you have to pwn 5th column 우리가 원하는 pw 값은 테이블의 5번째 열에 있는 것 같다. 5번째 열의 이름을 반드시 알아내야만 한다. 우선 가장 중요한 점은 query 의 select 뒤에 *(asterisk)가 있다는 것이다. 모든 column 의 데이터를 뽑겠다는 것이다. 또한 group by 를 이용하여 데이터들을 그룹화하여 뽑아낼 때 흔히 범하는 실수들이 있다. group by 를 쓰겠다는 이야기는 select 로 선택한 column 들에..

Web Hacking/LOS

Lord of SQL Injection - poltergeist

// Flag is in `flag_{$hash}` table, not in `member` table. Let's look over whole of the database Flag는 member 테이블이 아니라 flag_{$hash} 라는 테이블에 존재한다고 한다. 메타데이터를 써야할 분위기다. MySQL에서는 information_schema 라는 메타데이터를 사용하였다. SQLite 는 sqlite_master 라는 메타데이터를 사용한다. sqlite_master를 이용하여 테이블의 이름을 불러와 보자. group_concat 함수를 사용하면 원하는 데이터를 모두 출력할 수 있다.(https://lucvs.xyz/entry/Real-World-SQL-Injection, 참고) pw=' union s..

Web Hacking/LOS

Lord of SQL Injection - cyclops

union select 를 반드시 이용하라고 한다. 그러나 union select 를 곧이 곧대로 이용하니 아래와 같은 WAF 친구가 나를 반겨주었다. 'union select' 라는 문자열을 필터링하는 것 같다. 'union/**/select'로 우회하면 될 것 같다. 이후에는 union select 뒤에 나올 문자열 형식에 대한 문제다. 별것들이 다 막힌다. 제일 유력한 후보는 다음과 같다. id='\' and pw=' union/**/select 'first','second'# 이것도 WAF에 막혀버린다. 16진수로 바꾸어보자. id='\' and pw=' union/**/select 0x6669727374,0x7365636f6e64# 이것도 막힌다. pw 영역에서 'first' 혹은 'second..

Lucvs
'분류 전체보기' 카테고리의 글 목록 (6 Page)