웹 (78) 썸네일형 리스트형 los 14번 14번은 굉징히 단순합니다. shit이라는 변수에 값을 받아 쿼리문이 완성되는데 이때 shit의 값이 공백이면 됩니다. 하지만 여기서 공백, '\n','\r',\t'가 필터링 되어 있어서 기존에 공백을 우회했던 %0a 는 사용하지 못합니다. 하지만 구글에 sql 인젝션 우회기법을 검색하면 공백 우회 기법이 많이 나옵니다. 저는 다양한 우회 방법 중 %0b를 사용해서 문제를 해결했습니다. 답: ?shit=%0b los 13번 los 13번 입니다. 13번은 12번과 매우 유사하지만 필터링 대상에 공백과 like, '0x', or, and가 추가되었습니다. 하지만 제가 12번에서 비밀번호를 알아낼 때 사용했던 파이썬 코드는 공백을 제외하고는 필터링 대상이 없는 것을 알 수 있습니다. 여기서 공백을 기존에 우회했던 0x0a와 같은 문자로 우회할 수가 없습니다. 왜냐하면 '0x'문자열 또한 필터링 대상이기 때문입니다. 이 문제에서 사용한 우회 기법은 파이썬에서 공백을 모두 문자열을 잇는 방식 +기호로 공백을 대신하여 쿼리문을 삽입하였습니다. 그 외에는 12번과 풀이가 완전히 같습니다. 아래의 파이썬 코드와 비밀번호 입니다. 답 : ?pw=52dc3991 los 12번 los 12번입니다. 12번 문제는 substr, ascii, ' ,=문자가 필터링 되면 i속성이 적용되어있는 문제입니다. 이 문제도 비밀번호를 알아내야 하는데 제가 기존에 사용했던 코드의 쿼리문으로는 우회가 어려웠습니다. 그래서 비밀번호의 길이는 아래의 쿼리문으로 알아냈습니다. ?no=3 or id like "admin%" and length(pw) like "8%" 위처럼 입력하면 Hello admin이 출력되기 때문에 길이가 8인 것을 알 수 있습니다. 그리고 아래의 코드를 이용하여 비밀번호를 알아냈습니다. 위의 코드에서 사용한 쿼리문을 살펴보겠습니다. 먼저 no를 이용하였고, mid 함수를 이용해 한 자리씩 brute forcing을 진행합니다. brute forcing 과정은 다음과 같습니다. .. los 11번 los 11번입니다. 11번은 or, and뿐만 아니라 등호와 substr도 필터링 되면 i옵션이 적용되어 있기 때문에 단순히 대문자를 이용해서 우회가 불가능합니다. 그리고 이 문제는 비밀번호를 정확히 알아내야 하기 때문에 파이썬 코드를 이용했습니다. 공격에 사용한 파이썬 코드입니다. 여기서 쿼리문들을 위해서 얘기한 조건들을 모두 우회해주어야 합니다. or과 and는 기호를 이용해서 우회했고 등호는 like 를 이용하여 우회했습니다. 마지막으로 substr은 mid함수를 사용했는데 mid함수는 substr함수와 동일한 기능을 하는 함수입니다. 위의 코드를 예시로 살펴보면 pw에서 우리가 탐색할 위치부터 하나씩 가져온다는 의미로 substr함수와 동일한 기능을 한다고 할 수 있습니다. 이 문제에서 subs.. los 10번 los 10번입니다. 10번 문제는 쿼리문에 id pw 조건에 있는 것이 아니라 'and 1=0'이라는 조건이 추가되었습니다. 하지만 1=0이라는 수식은 절대로 참이 될 수 없습니다. 그렇기 때문에 pw의 값을 넣어줄때 마지막에 뒷부분을 주석으로 바꿔주는 #이나 --을 추가해주면 되는데 --을 사용할 경우 공백이 필요하기 때문에 공백을 추가해주면 됩니다. 이때 공백은 아스키코드 값으로 넣어주면 됩니다. 답 : ?pw=' or id='admin'%23 los 9번 los 9번입니다. 9번은 admin 문자열이 str_replace 함수로 보호되어 있는 문제입니다. str_replace(str1,str2,str3) 함수는 str3에 있는 str1 문자열을 str2문자열로 바꿔주는 함수입니다. 위 코드에서는 id로 받는 문자열에 admin문자열을 없애줍니다. 이 방법을 우회하기 위해서는 문자열 안에 문자열을 넣는 방식으로 해결해주면 됩니다. 저는 문자열 adadminmin을 사용하였는데 이 문자열을 줄 경우 가운데 admin이 사라지고 바깥의 admin만 남기 때문에 문제가 풀리게 됩니다. 답 : ?id=adadmin los 8번 los 8번입니다. 8번은 굉장히 단순합니다. admin이라는 문자열이 필터링 되어 있지만 i옵션이 없기 때문에 대문자로 ADMIN을 인자로 넣어주면 해결됩니다. 답 : ?id=ADMIN los 7번 los 7번 입니다. 문제 코드 살펴보겠습니다. 7번 문제는 4번 문제와 6번 문제를 합쳐놓은 것과 같다고 생각하면 편할 것 같습니다. 4번문제처럼 함수를 이용하여 비밀번호를 알아내야 하는데 그 과정에서 or, and 문자를 사용하지 못하는 것입니다. 그래서 저는 파이썬 코드 중 or 과 and를 각각 ||, &&로 변환하여 파이썬 코드를 실행하여 비밀번호를 찾아내었습니다. 아래는 파이썬 코드입니다. 비밀번호는 7b751aec입니다. 답:?pw=7b751aec 이전 1 ··· 6 7 8 9 10 다음