본문 바로가기

3. 웹 애플리케이션 취약점 진단136

lord of sql injection 13번 - bugbear 이제부터 필터링이 많아서 꽤나 복잡한 문제가 되었다. like가 필터링 되어서 in() 함수를 사용하였고, 공백또한 필터링되어 %09를 사용하였다. 그리고 우선 전에 like에서 했었던 숫자% 구문을 사용해 보았는데 잘 안되는거 같아 다른 방법을 써보았다. 그 전에 우선 길이부터 알아보기 위해 length() 함수로 길이를 검사해본 결과 8자리! mid(pw,1,1) 함수는 substr 함수와 같이 pw의 첫번째 자리를 추출해낸다. 이 함수를 이용해 숫자를 추측해 보았다. 첫번째 숫자는 5 쭉 찾되 in() 함수에서 문자열의 경우는 ""를 붙여서 찾아주어야 한다. 모두 찾은 결과 PW는 52dc3991 이었다. 2023. 12. 22.
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.