
컬럼은 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 |

컬럼은 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 |