write-up(web)/LOS

[Lord of SQLInjection] zombie_assassin write-up

ssongk 2022. 8. 1. 17:11

문제의 소스 코드입니다.

where 절의 조건을 참으로 만드는 게 문제의 목표입니다.

사용자에게 입력을 받아 addslahses 함수를 적용한 뒤 strrev 함수로 문자열을 뒤집습니다.

php.net

addslashes 함수는 ', ", \, nul byte에 \ 문자를 추가해 일반 문자로 만들어줍니다.

그래서 where 절의 조건 부분인 id='' and pw'' 를 조작해 id=' and pw' 가 되도록 만들어줘야 합니다.

또한 strrev 함수에 의해 ', ", \, nul byte(\0)는 각각 '\, "\, \\, 0\로 나오게 됩니다.

먼저 id에 nul(%00)을 넣어줘서 뒤의 '를 일반 문자로 바꿔주면 0\' and pw' 까지 id에 들어가게 됩니다.

이후 무조건 참이 되는 조건을 뒤에 넣어주면 됩니다.

pw에 남은 하나의 '문자는 주석(#,%23)으로 날려주면 문제가 풀립니다.