SQL Injection39 lord of sql injection 12번 - darkknight 이번에도 블라인드 SQL 인젝션 문제입니다. 필터링이 상당히 많네요 substr에 ascii에 ' 등.. ?no=1 or id like "admin" and pw like "0%"--+- 이런 구문을 이용해주었습니다. 설명하자면 like로 = 필터링 우회 " 는 ' 필터링 우회 ascii와 substr을 우회할 수도 있지만 (\) 가 필터링 되어있는 것을 보시면 () 와 같이 함수 처리되는 구문이 필터링됩니다. 그래서 pw like "0%" 와 같은 구문을 사용했습니다. 패스워드가 0으로 시작하면 "0%" 라고 했을 때에만 Hello admin이 나옵니다. 숫자와 문자를 노가다로 계속 넣어가며 한글자 한글자씩 알아내면 됩니다. python 프로그램을 만들어서 자동으로 하는것이 훨씬 편하고 좋습니다. 최종.. 2023. 12. 21. lord of sql injection 11번 - golem 이번 문제도 블라인드 sql인젝션 문제네요. or과 and뿐만 아니라 =과 substr 까지 필터링을 합니다. or과 and는 || 와 %26%26을 통해 우회하고 =는 like로, substr은 mid 함수나 substring 으로 우회할수 있습니다. 필터링을 철저하게 해야 이런 세세한 부분들을 막을수 있는 것이겠죠 우선 쿼리를 넣어봅니다. or 1=1 대신 || 1 like 1로 필터링을 우회하여 넣었더니 guest가 뜨네요. 이제 패스워드 길이를 알아봅시다. length 함수를 사용해 length(pw) like 8을 넣어주었더니 admin이 나왔네요. admin이 떴다는건 admin의 pw의 길이를 알려주는 것이겠죠. 하지만 확실하게 하려면 id='admin' and length(pw) like .. 2023. 12. 21. lord of sql injection 10번 - skeleton 이번 문제는 쿼리문 뒤에있는 and 1=0 에 대한 해답을 풀라고 만든듯 하다. 헷갈릴수 있는데 단순하게 뒤의 and 1=0을 주석처리하면 끝나는 문제이기 때문에 전과 같은 쿼리를 사용해주면 된다. ?pw=1' OR id='admin'--+- 를 입력해주니 클리어 2023. 12. 21. lord of sql injection 9번 - vampire 이번에도 필터링을 우회해야 하는것 같다. 우선 전과 같이 ADMIN으로 대문자로 넣어보았다. strtolower 함수가 ADMIN을 소문자로 바꿔버리고 str_replace 함수가 그 문자 즉, admin을 공백으로 바꾸어 버리기 때문에 필터링이 되어 admin이 들어가질 않는다.. str_replace 함수를 이용한 필터링에는 심각한 취약점이 있는데 그건 바로 단 한번만 필터링을 수행한다는 것이다. 즉, ADADMINmIN 이런 방식으로 구문을 넣는다면 가운데의 ADMIN이 필터링되어 사라지고 양옆에 붙은 AD 와 mIN이 붙어 결국 ADmIN 값이 쿼리로 넘어가게 된다. 그런 방식으로 쿼리를 넣어주면 클리어. 2023. 12. 21. 이전 1 ··· 5 6 7 8 9 10 다음