티스토리 뷰
LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
40단계 소스코드이다.
id=admin으로 고정되어있고 pw파라미터를 입력받아 일치하면 풀리는 문제인 줄 알고 풀었었다.
역시 아니었고 poltergeistFlag === pw 구문을 보고 이상한 점을 느꼈다.
일단 mysql에서 했던 것처럼 blind sql을 위해 참 거짓 출력이 다른 점을 찾았었고 admin에 해당하는 pw값을 찾아 파라미터로 주입했지만 문제는 풀리지 않았다. 어차피 정답이 아닌 부분이라 자세하게 포스팅하지 않겠다.
문제의 해결조건은 pw로 입력받은 값이 poltergeistFlag의 값과 같으면 해결된다. 따라서 admin의 pw값은 애초에 필요하지도 않았다..
소스코드를 보면 주석처리된 부분에 flag값은 member 테이블에 없고 db의 전체에서 찾아보라고 되어있다.
아마 mysql의 information_schema.~~~ 과 같은 문제라 생각이 들었다.
따라서 sqlite에서 mysql에서의 inforamtion_schema. 과 대치되는 걸 찾아왔다.
sqlite_master // == information_shcema.~
tbl_name // == table_name
name // name또한 이번 문제에서는 tbl_name과 같은 역할을 수행했다.
sql // sql을 출력한다. table_name('column_name',type)
이를 조합해 이번 문제를 해결해보자.
쿼리:? pw='union select sql from sqlite_master--+- 의 결과이다
하지만 주석처리에서 member테이블이 아닌 다른 테이블에 들어 있다고 했다.
limit을 추가해 다른 테이블을 조회해보자.
쿼리: ?pw='union select sql from sqlite_master limit 1,1--+- 의 결과이다.
flag_70 c81 d99 테이블이 출력되었다.
이를 통해 flag_0876285c를 출력해보자
쿼리: ?pw=%27union%20select%20flag_0876285c%20from%20flag_70c81d99--+-
출력되었다.
pw값으로 입력하자.
문제 해결
시행착오
1. pw를 파라미터로 받는다고 pw값을 찾는 문제일 거라 단정 짓지 말자
2. sqlite에서는 sqlite_master가 information_schema 와 같은 역할을 하며 sql, name, table_name 등을 통해 조회할 수 있다.
'SQL injection > lord of SQL' 카테고리의 다른 글
Lord Of SQL injection-42단계 revenant (0) | 2022.02.21 |
---|---|
Lord Of SQL Injection 41단계-nessie (0) | 2022.02.21 |
Lord Of SQL injection 39단계-banshee (0) | 2022.02.14 |
Lord Of SQL injection 38단계-manticore (0) | 2022.02.09 |
Lord Of SQL injection 37단계-chupacabra (0) | 2022.02.09 |
- Total
- Today
- Yesterday
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- los 15단계
- zixem
- 프로그래머스
- 김영한 실전 자바 기본
- Los
- 김영한
- 코딩테스트
- lord of sql
- los 15
- java
- samron
- 백준
- extends
- 백준 피보나치
- 프로그래머스 상품을 구매한 회원 비율 구하기
- 기술스택
- static
- spring
- 스프링
- 상품을 구매한 회원 비율 구하기 파이썬
- 자바
- 코딩테스트 준비
- 백준 피보나치 수열
- 김영한 실전 자바 기초
- 김영한 실전 자바 중급
- 상속
- ys.k
- samron3
- webhacking.kr
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |