본문 바로가기
개인 공부/WEB

[웹해킹] LOS 16 - (Succubus)

by 아메리카노와떡볶이 2021. 6. 19.
728x90
Lord of sql injection - Succubus 풀이

los 16번 succubus에 대한 풀이입니다.

id와 pw를 입력해서, 계정 로그인에 성공하면 해결되는 문제입니다.

 

문제 접근

싱글쿼터에 대해 필터링이 되어있습니다.

그리고 입력 필드를 살펴보면, id와 pw가 싱글 쿼터로 감싸져있습니다.

따라서 입력값에 임의로 값을 줘보면

결과처럼 싱글쿼터안에 작성되는 것을 볼 수 있습니다.

이전에 풀었던 문제들을 생각해보면, id값을 참으로 만들고, 뒤에는 주석처리해서 문제를 해결하고는 했었습니다.

그러기 위해서는, 지금 문제에 제약조건인 싱글 쿼터를 부수는 작업을 해야합니다.

 

c언어를 배울때, 특수문자를 출력하기 위해 \를 특수기능문자 앞에 작성합니다. 그렇게되면 그것은 더 이상 기능을 하는 문자가 아닌 , 일반 문자열이 됩니다. 

이 아이디어를 이용해서, id에 존재하는 id= '  ' 두개의 싱글쿼터중 두번째 싱글쿼터를 문자열로 만들어버립니다

 

그렇게되면

where id=' \' and pw='1'

\' and pw= 이 문자열로 만들어집니다.

따라서, id의 두번째 싱글쿼터를 부수는 작업에 성공했으므로 그 다음은

where id=' \' and pw='or "1=1" #'

앞에서 문자열로 만들었던 \'and pw= 까지를 id 값에 주고 

pw의 입력값으로 or을 줘서 pw=을 무력화 시켜버린 뒤에, 항상 참이되는 식인 1=1을 더블쿼터로 작성(필터링 제한때문)합니다.

그리고 마지막으로 남아있는 pw의 두번째 싱글쿼터는 주석처리합니다.

 

위의 방법으로 해결할 수 있습니다.

 

728x90

'개인 공부 > WEB' 카테고리의 다른 글

[웹해킹] LOS 18 - (Nightmare)  (0) 2021.06.19
[웹해킹] LOS 17 - (Zombie Assassin)  (0) 2021.06.19
[웹해킹] LOS 15 - (Assassin)  (1) 2021.06.19
[웹해킹] LOS 14 - (Giant)  (0) 2021.06.19
[웹해킹] LOS 13 - (Bugbear)  (0) 2021.06.19

댓글