본문 바로가기
3. 웹 애플리케이션 취약점 진단/Lord of Sql Injection

lord of sql injection 30번 - ouroboros

by Robert8478 2023. 12. 22.

이번 문제는 소스코드가 짧다. 바로 pw 관련 구문을 넣어보았지만 아무것도 뜨지 않는다.
아무래도 데이터베이스가 비어있어서 그런것 같다.
그래서 union select를 사용해보았다.

union select를 사용하니 pw에 대한 값이 나왔는데 클리어를 하는 조건은 result pw와 get pw.. 즉, 자신이 쿼리에 작성한 입력값과 결과 값이 동일해야 한다는 뜻이다. 이걸 어떻게 해야하나 생각하다가 구글링을 해보니 SQL에 Quine 이라는 자신이 작성한 소스코드를 그대로 출력할수 있는 메타프로그램을 찾았다.
이 문제는 Quine을 이용해서 풀어야 할것 같다.

https://en.wikipedia.org/wiki/Quine_(computing)

 

Quine (computing) - Wikipedia

From Wikipedia, the free encyclopedia Self-replicating program A quine's output is exactly the same as its source code (the syntax highlighting demonstrated by the text editor in the upper half of the image does not affect the output of the quine). A quine

en.wikipedia.org

Quine은 replace 함수를 사용해서 자기자신의 소스코드를 그대로 출력할 수 있다.
정답에 맞게끔 코드를 수정하여 넣어보았다.

%27%20union%20SELECT%20REPLACE(REPLACE(%27"%20union%20SELECT%20REPLACE(REPLACE("$",CHAR(34), CHAR(39)),CHAR(36),"$")%20AS%20Quine%23%27,CHAR(34),CHAR(39)),CHAR(36),%27"%20union%20SELECT%20
REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$")%20AS%20Quine%23%27)%20AS%20Quine%23

라는 값을 넣은 결과 클리어되었다. 이 문제는 도저히 모르겠어서 구글링을 많이 해서 알아내었다...ㅠ