본문 바로가기

wargame39

lord of sql injection 36번 - cyclops 이번에는 union select를 사용해서 id는 first, pw는 second를 추출하면 클리어될것 같다. 우선 바로 union select를 해보았을때 역시나 방화벽에 의해 막힌다. 그렇기 때문에 개행문자(%0a)를 이용해서 union과 select를 끊어주면서 쿼리가 작동되게 하면 될것 같다. 우선은 id쪽에 '로 막고 %23으로 주석처리하여 뒷 구문을 무효화했다. 그 뒤 &pw 값 뒤에 '#%0a%0dunion%23%0a%0ddistinct select로 넣어주니 방화벽 필터링에 걸리지 않았다. 혹시몰라 %0a%0d 두개의 개행문자를 사용하였는데 %0a 만 써도 잘 작동된다. 그런데 select "first","second"를 하는 과정에서 블록되었다. 아무래도 first와 second 문자열을.. 2023. 12. 22.
lord of sql injection 35번 - godzilla 이번에는 pw를 찾는 문제인데 똑같이 웹방화벽이 작동하고 있는 상황이다. 그냥 쿼리를 넣은 forbidden이 뜬다. 그래서 웹방화벽 우회 쿼리를 넣으니 hello admin이 떴다. 이제 쿼리만 항상 하던 방식으로 블라인드 SQLI 쿼리를 넣어서 pw를 찾으면 될거같다. length를 찾아본 결과 8자리이다. 이제 substr() 함수로 하나씩 찾아보자 이런식으로 찾으면 된다. 그런데 이상하게 ascii나 ord 함수를 써서 숫자로 비교를 해보면 이상한 비밀번호가 나온다. 아무래도 pw 값에 대한 ascii 코드값이 제대로 안나와서 그런거같다... 그렇기때문에 ascii나 ord 함수 말고 전에 사용했던 substr 함수만 이용해서 문자열과 비교를 하는 프로그램을 써서 비밀번호를 찾아내는게 더 정확하다.. 2023. 12. 22.
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.