본문 바로가기

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

lord of sql injection 34번 - death 이번 문제는 admin id 값을 불러오는 문제다. 그런데 우선 pw가 md5로 해싱되어있는것 같다. 우선 기본 쿼리를 넣어보자. 역시나 되지 않는다. 여기서 pw에 아무 값이나 넣어보았다. 응?? 그랬더니 갑자기 Forbidden이 나왔다. 이걸 보면 저번 문제처럼 웹 방화벽이 이 문제에도 동작중인것 같다. 그렇다면 전에 했던 문제와 같은 쿼리에서 내용만 조금 수정하면 될 것 같다. 우선은 그대로 넣어봤더니 hello guest가 나왔다. 여기서 쿼리를 수정하며 admin의 아이디를 불러와야한다. 그래서 기존에 있던 {a 1}=1 을 지우고 admin이 필터링 되니 id 2023. 12. 22.
lord of sql injection 33번 - cthulhu 이번엔 뭔가 실전과 같은 문제가 나왔다. 필터링 자체는 별거 없지만 이번엔 아파치 웹 방화벽인 ModSecurity가 동작하고 있다. 그렇기 때문에 왠만한 SQL 인젝션 코드들은 방어될 것이다. 이 ModSecurity 웹 방화벽을 뚫어야만 한다. 보다시피 기본적인 sql 쿼리를 넣었을때 Forbidden으로 블로킹된다. 구문을 아예 통째로 hex화 시켜 넣어보았는데도 결과는 같았다. 그렇다면 아무래도 웹 방화벽을 우회할만한 웹방화벽 자체 취약점을 노리는것이 맞는것 같다. 이번 문제는 대놓고 페이지가 사용하는 웹방화벽의 버전이 그대로 나와있다. 이런 취약한 부분을 이용해서 해킹을 해보자. 구글에 해당 웹방화벽 버전을 검색해서 취약점을 찾아보았다. https://github.com/SpiderLabs/ow.. 2023. 12. 22.
lord of sql injection 32번 - alien 이번에도 문제가 특이하고 어렵다.. 몇몇 필터링은 우회한다 쳐도 밑에 4개 구문이 이상하다. 첫번째 조건은 id가 admin이 아니면 exit되기에 admin이어야 하는 것이고 두번째는 id가 admin이면 안되고 세번째는 query2 구문에서 admin이면 안되고 네변째는 query2 구문에서 admin이어야 한다. 우선 no에 1값을 넣어보았다. 그대로 sandbox1로 넘어가는 것을 볼 수 있다. 단순하게 admin을 찾는 구문을 넣어보아도 이상한 조건들때문에 넘어가지지 않는다. 그냥 구문만 넣었을때 이 조건을 만족하는건 불가능하다. 그래서 구글링으로 찾아보았는데 now()와 sleep()을 이용해서 시간에 따른 쿼리를 조정한다면 가능해진다. 우선 union select를 이용해 두개의 쿼리를 이용.. 2023. 12. 22.
lord of sql injection 31번 - Zombie 이번에도 전문제와 상당히 비슷해보이는 문제인데 필터링이 추가되었다. 우선 union select를 넣었더니 잘 되었다. 그래서 전문제에서 사용했던 Quine 구문을 다시 넣어보았는데 역시 필터링에 걸렸다. 아무래도 ace가 필터링되어 막아진듯 하다. 그렇다면 다른 방법으로 pw에 자신이 입력한 쿼리값이 들어가야하는데 역시나 막막해서 구글링을 해보았더니 info from information_schema.processlist 라는 값을 select 함으로써 자신의 코드를 얻어낼 수 있다고 한다. 그렇게 입력해보았더니 처음부터 끝까지의 전체 쿼리문이 pw값으로 들어가게 되었다. 그렇다면 substr 함수를 이용해 앞 쿼리만 끊어줄수 있지 않을까 생각했다. info를 substr 해준 결과 역시 쿼리가 잘 끊.. 2023. 12. 22.