본문 바로가기

분류 전체보기257

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.
lord of sql injection 8번 - troll 이번 문제는 admin을 필터링 하는데 id가 admin이면 패스하는 문제이다. 어떻게 하면 admin을 넣을 수 있을까? 문자열을 필터링 하는 경우 대소문자를 모두 필터링 하지 않는 경우가 있다. 이런 경우 ADMIN이나 AdMIN, adMiN 등 대소문자를 섞어서 넣으면 쿼리가 통과되는 경우가 있다. 이 문제도 마찬가지로 id에 AdMIN이라고 넣으니 필터링을 우회하여 패스가 되었다. 2023. 12. 21.