0x.Wargame/lord of SQL injection
-
0x03.los Orc0x.Wargame/lord of SQL injection 2017. 12. 18. 13:48
0x03.los Orc 오랜만에 다시 시작한 los이다. 조만간 후딱 20까지 끝낼 예정이므로 포스팅이 아주 많이 올라갈 예정이다. 이번 문제에 주어진 코드를 보자면 preg_match로 몇가지를 막아놓았을 뿐만 아니라, 1=1을 사용하게 되더라도 result 부분에서 pw가 get_pw와 일치하여야지만 문제가 풀리기 때문에 직접 패스워드를 알아내어야 한다. 위와 같이 참이되어도 문제가 풀리지 않는다는 이야기다. 하지만 여기서 id가 admin일 경우, 'Hello admin'이라는 문구를 출력해줌으로써 조건식을 사용할 때 일치 여부 확인에 사용할 수 있을 것 같았다. id='admin'이기에 참인데, and 구문을 써서 pw의 길이를 추출해 보았다. 8뒤에 #또는 --+를 붙임으로써 뒤의 싱글쿼터를 주..
-
0x02.los Goblin0x.Wargame/lord of SQL injection 2017. 9. 27. 20:32
0x02.los Goblin 오랜만에 푸는 los이다. 코드를 보면 preg_match에서 쿼터부터 많은 것을 막아서 기존의 방법으로는 공격을 할 수 없다.그래서 %20과 hex변환을 통해 공격을 하였다. ?no=2%20or%20id=0x61646D696E 여기서 주의할점은 no=1을 넣으면 제대로 된 결과를 얻을 수 없다는 것이다. id다음에는 hex값의 admin이 들어갔는데 꼭 0x를 붙여줘야 한다. 그리고 %20은 공백을 나타낸다.
-
0x01.los Cobolt0x.Wargame/lord of SQL injection 2017. 9. 20. 21:02
0x01.los Cobolt 바로 이어서 los 2번 문제의 풀이를 작성하겠다. 코드를 보자면 1번 문제와 거의 비슷한데 id의 값이 admin이면 된다는 것을 알 수 있다.pw 부분에 있는 md5는 php의 함수로 안에 특정 문자열을 넣으면 해쉬함수화 즉, 인코딩을 해준다. 꽤 오랜 시간을 저 md5에 삽질을 하느라 소모했지만, 결국 id의 값이 admin이면 쿼리 조건문을 충족함으로 앞부분에 인젝션을 시도하였고 성공할 수 있었다. ?id=admin'or'a=a 라고 인젝션을 하게 되면 뒤의 pw의 값의 여부와 상관없이 참이되기 때문에 인젝션에 성공하게 된다.
-
0x00.los Gremlin0x.Wargame/lord of SQL injection 2017. 9. 20. 19:20
0x00.los Gremlin 동아리에 들어온 첫날부터 시작하게 된 워게임이다. 저 못생긴 그렘린 사진을 클릭하면 아래와 같은 php 코드를 확인할 수 있다. 핵심적인 부분은 위쪽에 위치한 query : ~ pw='' 까지의 부분이다. id와 pw의 값을 통해 이 문제를 푸는 것이 핵심인데 기본적인 형태가 SQL injection을 시도하면 풀릴 것 같다. 주소값이 끝나는 php의 뒤에 ?id=pwnwiz라는 추가문자열을 입력해보았더니, 위의 쿼리 구문의 id값으로 pwnwiz가 들어간 것을 확인할 수 있었다.만약 pw부분을 or 연산자를 활용하여 언제나 참이되게 바꿀 수 있다면 풀릴 것 같다는 생각이 들었다. ?pw=1'or'1=1 아주 유명한 sql injection 구문이다.위의 구문은 pw의 값이..