분류 전체보기257 lord of sql injection 19번 - xavis 이번에도 블라인드 sqli 문제다. 그런데 이번엔 필터링 자체가 별로 없는데 우선 매일 쓰던 쿼리를 넣어보았다. 잘 된다.. 그래서 length를 찾아보았다. 12자인것으로 확인.. 그래서 ascii와 substr 함수로 찾아보려고 한다. 그런데 이상하다.. 첫번째 글자가 아스키코드 0의 값을 가리킨다. 이것은 null값을 의미하는데 뭔가 문제가 있는것 같다. 이런 경우는 pw가 영문자나 숫자가 아닐 가능성이 높기 때문에 ascii 대신 ord 함수로 대체해서 써보았다. 그랬더니 값이 50000 이상을 훌쩍 넘긴다.. 특수문자도 아니고 영문자도 아니고 숫자도 아니라면 뭘까..? 답은 하나밖에 없다. 한글이거나 다른 언어이거나.. 그래서 이 문제는 한글같은 문자와 호환하는 유니코드 범위의 숫자로 변경해서 .. 2023. 12. 22. lord of sql injection 18번 - nightmare 이번에는 주석문이 필터링되고 글자도 6자 이내로만 pw에 넣을 수 있다. 주석문의 경우 %00 null을 사용해서 뒤를 주석처리 해줄 수 있을것이다. 쿼리를 보니 pw=('') 이런 식으로 되어있는데 이 부분을 잘 수정한다면 pw를 참으로 만들고 뒤를 주석처리하면 될것같다. ?pw=')=0;%00 이렇게 작성하면 pw를 참으로 만들고 뒤를 주석처리 하며 6자리로 딱 끝낼 수 있다. 코드를 삽입하여 클리어 2023. 12. 22. lord of sql injection 17번 - zombie_assassin 이번 문제도 '를 문자열화 시켜야할듯 하다. 그런데 addslashes가 있어서 글자를 넣으면 뒤에 \가 자동으로 붙게된다. 그래서 \를 넣게되면 \\이 되기때문에 전 방법으로는 어렵다. 방법이 두개 있는데 " 를 넣어서 \가 맞도록 해주거나 %00 null값을 넣어서 통과할 수 있다. %00을 넣어서 null값으로 삽입해보았다. %00&pw=||1=1--+- 구문을 넣어주었는데 위에 쿼리문을 보면 배치가 이상하게 되어있다.; 이는 strrev 함수가 배치문을 거꾸로 하기 때문이다. 그렇기 때문에 배치를 거꾸로 해서 넣어주면 정상적으로 삽입될것이다. %00&pw=-+--1=1|| 로 삽입해주니 클리어 2023. 12. 22. lord of sql injection 16번 - succubus 이번 문제는 전문제랑 비슷하게 싱글쿼터가 필터링 되는 문제다. 저번문제는 like의 특성을 이용했는데 이번엔 조금 헷갈린다. 그런데 여기서 잘 보면 \ 가 필터링 되지 않는것 같다. id에 \를 넣었더니 쿼리에 들어갔다. 이 특수문자를 활용해 위 구문을 우회할 수 있다. 싱글쿼터 앞에 \를 붙이면 해당 싱글쿼터는 문자열로 취급이 된다. 이를 이용해서 위 구문의 싱글쿼터 4개를 이용해서 통과할수 있는데 where id='' and pw='' 가 있다면 where id='\' and pw='' 이런식으로 넣어주면 \' 이 빨간색으로 칠한 싱글쿼터가 문자열, 즉 그냥 id값의 일부로써 들어가는 것이다. 만약 id값이 admin인 것을 패스시킨다면 어렵겠지만 id값은 무엇이든 상관 없으니 그대로 문자열화 시키면.. 2023. 12. 22. 이전 1 ··· 37 38 39 40 41 42 43 ··· 65 다음