-
|Lord of SQL_injection| #32 AlienWargame Site/SQL injection 2019. 4. 8. 16:49
마지막 문제 Alien 이다.
LOS 라는 대장정의 마침표를 찍어볼까아??
띠용.. 문제를 풀기위해서 만족해야하는 4가지 조건이 있다.
우선 두 개의 쿼리가 있는 것을 알 수 있다. (query, query2)
1. query 의 결과 id 는 admin 이여야 한다.
2. query 의 결과 id 는 admin 이면 안된다.
3. query2 의 결과 id 는 admin 이면 안된다.
4. query2 의 결과 id 는 admin 이여야 한다.
1, 2 번 3, 4 번의 조건이 너무 모순적이었다.
단순한 문제는 아니라고 생각했다.
만약 계속 바뀌는 값을 중간에 설정할 수 있다면 문제가 해결될거 같다는 생각이 들었다.
예를 들어, 쿼리의 결과인 id 가 시간단위로 바뀐다면 if 문을 파고들 수 있지 않을까?
예를들어 admin > bdmin > bdmin > admin 과 같은 형태의 결과라면 클리어 할 수 있다.
now( ) 라는 현재시간을 반환하는 함수와 시간을 경과시키는 sleep( ) 함수의 조합으로 적절한 쿼리문을 작성할 수 있다.
lower(hex(10)) 이 'a' 라는 점을 이용해서 코드를 작성해보자.
concat(lower(hex(10%2b(!sleep(1)%26%26now()%2=1))), 0x646d696e)%23
다음과 같은 쿼리를 통해 admin > bdmin 혹은 bdmin > admin 의 쿼리를 작성할 수 있다.
query2 의 경우에는 문자열로 저장이 되므로 ' ~~ #' 뒤에 똑같이 union select 를 붙혀주면 해결이 된다.
Alien Clear ~!!
'Wargame Site > SQL injection' 카테고리의 다른 글
SQL injection 06 (풀어보세요) (0) 2019.04.28 |Lord of SQL_injection| #33 Allclear (0) 2019.04.08 |Lord of SQL_injection| #31 Zombie (0) 2019.04.08 |Lord of SQL_injection| #30 Ouroboros (0) 2019.04.08 |Lord of SQL_injection| #29 Phantom (0) 2019.03.15 댓글