CTF/DEADFACE 2024

[SQL] SkyWave 4 : Longest Run Write-Up

kimcogi 2024. 10. 20. 20:59

이전 3번에 이은 4번 문제다

 

특정 device의 좌표를 활용해서 -100 보다 큰 dBm을 가지고 가장 오랫동안 연결되어 있는 device의 imei값을 찾으면 되는 문제이다

SELECT tower_id FROM Towers
WHERE (latitude = 41.639642 AND longitude = -79.220682)
OR (latitude = 40.598271 AND longitude = -78.801089)
OR (latitude = 41.045892 AND longitude = -79.068358)
OR (latitude = 41.257279 AND longitude = -77.529468)
;

* 특정 테이블의 구조를 파악하는 내용들은 생략

 

Towers 테이블 내 tower_id 컬럼 값 중 특정 위도(latitude), 경도(longitude)가 일치하는 레코드만 선택하도록 구문을 삽입해 보았다

결과로는 105, 123, 187, 200이 있는 것을 알 수 있다

 

SELECT device_id, MAX(connection_duration) AS MAX_duration
FROM COnnections
WHERE tower_id In (105, 123, 187, 200)
AND signal_strength > -100
GROUP BY device_id
ORDER BY max_duration DESC
LIMIT 1;

 

다음 사용한 구문으로는 Connections 테이블 내에서 데이터를 조회해 보도록 한 건데 가장 긴 연결 시간을 찾기 위해 connection_duration 필드의 최댓값을 먼저 계산한 후 MAX_duration이라는 이름으로 반환하고 tower_id 필드 내  105, 123, 187, 200 중 하나에 해당되는 레코드만을 필터링한 후 signal_strength 필드가 -100 보다 큰 레코드만 을 선택해서 

결과를 내림차순으로 보여주도록 해주는 것이다

 

그 결과 device_id는 344이고 max_duration은 85709인 결과가 나왔다

 

 

SELECT device_imei FROM Devices WHERE device_id = 344;

 

위 내용들로 보아 가장 긴 연결 시간을 보인 device_id는 344이고 344에 대한 device_imei 값을 구하면 된다

 

결과는 845303290931675로 해당 값이 flag 임을 알 수 있다

 

flag{845303290931675}
반응형