웹 클라이언트가 반환한 메시지를 이용해 정보 유출 혹은 불법 인증하는 공격
SQL Injection 공격은 연산자 이용, 시간 지연 공격 등을 이용해서 백엔드 단에서 공격하는 기법입니다. 백문 불여일견이니 한번 풀어 보죠.

생긴 거부터 취약하게 생겼는데 저만 그런가요? 아무튼

기초 문제는 기초로 공격하는 게 맞겠죠?
res = query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}"')
벌써 답 나왔네요. 필터링도 없는데 이렇게 쓰면 뭐다? 주석 처리다~
admin" -- . 끝.

너무 간단했으니까 다음 걸로 넘어가 보죠.

일단 능지가 좋아야 넘어갈 수 있네요. 에이, 근데 설마 이걸 오랜 시간 고민하고 풀겠어요?

10초도 안 된 거 같은데...

여기서 공격하라는 말 같네요. 아무거나 적어 봅시다!

그렇다네여. 오해하실 수도 있는데 저거 제 아이피 아니에요.
이름은 머 찔러 봤자 이름이고 가져와도 의미가 없죠?
answer을 한번 찔러 봅시다.

여기서요.
' or 1=1 -- . 끝.

이것도 너무 간단했나요?

엌 이거 제가 수업 발표할 때 썼던 건데 모르겠나요? 그래도 봅시다.

코드는 이렇게 돼 있는데 그냥 봐도 ''or'2'=no인데요?
꼭 등호를 앞에만 붙이라는 법은 없습니다.

원래는 공백 문자 필터링 우회해야 하는데 %09 이런 걸로...
쉬운 게 있으면 굳이 그럴 필요는 없죠. 근데 저거 생각한다고 조금 걸리긴 했지만요.
다음으로 넘어갑시다.

뭔가 단단히 마음을 먹으신 거 같은데요? 배경부터가 갑자기 흰색이야.

쉬운 문제 같진 않네요. 등호가 막혀 있어서 제가 위에서 했던 방식으로는 뚫리지가 않습니다. 심지어 admin도 막아 놨네요? 그렇다고 바로 주석 처리하자니... mb_convert_encoding 때문에 뭐가 제대로 되지 않습니다. ' 이걸 못 써요. 근데 이거 우회를 %aa~%fe 이런 거 처음부터 쓰면 막을 수 있다네요? 이렇게 하면 문자가 돼 버린대요.
그럼 %aa' -- &pw=asf로 실험해 볼까요?

Wrong이 뜹니다. 그럼 된 거죠? admin도 문자 우회해서 한번 뚫어 봅시다! 아스키 코드를 알아야겠네요.
admin은 각각 97, 100, 109, 105, 110으로 이루어져 있어요. 그러면 chr(97,100,109,105,110) 이러면 되겠네요!
%aa'%20or%20id%20LIKE%20char(97,100,109,105,110) -- &pw=asf
