본문 바로가기

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

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.
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.