컬럼은 no, ip, email로 3개이다. $_SERVER[REMOTE_ADDR]이 뭔지 찾아봤더니 이름 대로 ip를 반환하는 것이였다.  

먼저 첫번째 쿼리에서는 joinmail의 값이 있으면 사용자의 정보를 table에 집어넣는다. 여기서 별다른 검사가 없어서 취약점이 존재한다. 

그 다음 쿼리는 no=1 이거나 접속자의 ip와 동일한 아이템을 가지고 온다. 

이렇게 말이다. 사용자의 정보는 no=0으로 들어간다. 

 

마지막은 관리자의 email을 알아 맞추라는 내용이다. 삽질 많이했는데 sleep 함수같은 것도 안먹히는 것 같아서 

좀 생각해보았다. 

정답은 서브쿼리를 주는데 mysql에서는 자신 테이블에서 참조가 안되는데 테이블에 별칭을 주면 된다. 

별칭은 as를 통해 줄 수 있다.  

 

(select email from prob_phantom as p where no=1) 문을 통해서 no=1 인 email을 가져오라는 뜻이다. 

 

... 이런 것도 되구나~ 하는 문제였다. 

 

'전공쪽 > Lord of Sql injection' 카테고리의 다른 글

[los] ouroboros  (0) 2020.12.15
[los] frankenstein  (0) 2020.12.15
[los] blue dragon  (0) 2020.12.15
[los] red dragon  (0) 2020.12.15
[los] green dragon  (0) 2020.12.15