본문 바로가기

SQL Injection39

lord of sql injection 16번 - succubus 이번 문제는 전문제랑 비슷하게 싱글쿼터가 필터링 되는 문제다. 저번문제는 like의 특성을 이용했는데 이번엔 조금 헷갈린다. 그런데 여기서 잘 보면 \ 가 필터링 되지 않는것 같다. id에 \를 넣었더니 쿼리에 들어갔다. 이 특수문자를 활용해 위 구문을 우회할 수 있다. 싱글쿼터 앞에 \를 붙이면 해당 싱글쿼터는 문자열로 취급이 된다. 이를 이용해서 위 구문의 싱글쿼터 4개를 이용해서 통과할수 있는데 where id='' and pw='' 가 있다면 where id='\' and pw='' 이런식으로 넣어주면 \' 이 빨간색으로 칠한 싱글쿼터가 문자열, 즉 그냥 id값의 일부로써 들어가는 것이다. 만약 id값이 admin인 것을 패스시킨다면 어렵겠지만 id값은 무엇이든 상관 없으니 그대로 문자열화 시키면.. 2023. 12. 22.
lord of sql injection 15번 - assassin 이번 문제도 색다른 문제이다. ' 싱글 쿼터가 필터링되기 때문에 기존처럼 뒤에 추가구문을 입력하는게 불가능하다. 그렇다는건 쿼리의 like를 이용해 admin 패스워드를 찾아내야 한다. like에 저번에 7%와 같은 구문을 썼던것과 같이 특수문자를 활용하여 글자를 유추할수 있는데 7%는 7로 시작하는 글자를 의미하고 %7%는 사이에 7이 끼어있는 글자 등을 의미한다. 그리고 _ 는 pw의 해당 자리를 의미한다. _를 8개 넣어보니 갑자기 Hello guest가 뜬것은 pw가 8자리 라는것을 의미한다. 그리고 _ 자리에 하나하나 번호를 채워가다 보니 guest pw가 나왔다. 하지만 우리에게 필요한것은 admin의 pw다 이를 찾으려면 guest와 admin의 pw에서 다른 부분을 찾아야한다. 그래서 _를.. 2023. 12. 22.
lord of sql injection 14번 - giant 이번엔 문제 형태가 바뀌었다. shit 값을 주어서 위 쿼리가 정상 작동하도록 만들어 주어야 하는데 공백을 넣어주어야 하는데 여러 공백 구문이 필터링 되어있다. 전에 사용하던 %09 즉 /t 도 필터링되어 있으므로 이번엔 %0b인 vertical tab 을 써보았다. 필터링이 되지 않았으므로 정상적으로 쿼리가 넘어가면서 클리어 2023. 12. 22.
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.