Php注入点构造

把下面保存成 Test.php

<?
$mysql_server_name = "localhost";
    $mysql_username    = "root";
    $mysql_password    = "password";
    $mysql_database    = "phpzr";    //??ݿ??
    $conn=mysql_connect( $mysql_server_name, $mysql_username, $mysql_password );
    mysql_select_db($mysql_database,$conn);
$id=$_GET['id'];
    $sql = "select username,password from admin where id=$id";
    $result=mysql_db_query( $mysql_database, $sql,$conn );    
    $row=mysql_fetch_row($result);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Php Sql Injection Test </title>
</head>
<body>
<p align="center"><b><font color="#FF0000" size="5" face="华文行楷">&nbsp;</font><font color="#FF0000" size="5" face="华文新魏">PHP
注入测试专用</font></b></p>
<table width="100%" height="25%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><?=$row[0]?></td>
</tr>
<tr>
<td><?=$row[1]?></td>
</tr>
</table>
<p><u><font color="#0000FF">94yy</font></u></p>
<p><font color="#0000FF">Blog: Http://www.cnblogs.com/94yy</font></p>
<p>&nbsp;</p>
</body>
</html>

看到了吧ID没有任何过滤就提交到数据库

在MYSQL命令行下执行下面的SQL语句就行,你也可以

保存成test.sql 使用phpmyadmin执行就ok了,在MYSQL命令行下执行CREATE DATABASE `phpzr` ; 然后输入USE phpzr 就是进入这个数据库,然后输入其他语句

CREATE DATABASE `phpzr` ; //创建数据库名称


CREATE TABLE admin (
id int(10) unsigned NOT NULL auto_increment,
username char(10) NOT NULL default '',
password char(10) NOT NULL default '',
useremail char(20) NOT NULL default '',
groupid int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;


INSERT INTO admin VALUES (1, 'admin', 'www.cnblogs.com/94yy','94yy@qq.com', 1);
INSERT INTO admin VALUES (2, 'admin1', 'www.cnblogs.com/94yy','94yy@qq.com', 2);
INSERT INTO admin VALUES (3, 'admin2', 'www.cnblogs.com/94yy','94yy@qq.com', 3);
INSERT INTO admin VALUES (4, 'admin3', 'www.cnblogs.com/94yy','94yy@qq.com', 4);
INSERT INTO admin VALUES (5, 'admin4', 'www.cnblogs.com/94yy','94yy@qq.com', 5);

CREATE TABLE admin1 (
id int(10) unsigned NOT NULL auto_increment,
username char(10) NOT NULL default '',
password char(10) NOT NULL default '',
useremail char(20) NOT NULL default '',
groupid int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;


INSERT INTO admin1 VALUES (1, 'admin', 'www.cnblogs.com/94yy','94yy@qq.com', 1);
INSERT INTO admin1 VALUES (2, 'admin1', 'www.cnblogs.com/94yy','94yy@qq.com', 2);
INSERT INTO admin1 VALUES (3, 'admin2', 'www.cnblogs.com/94yy','94yy@qq.com', 3);
INSERT INTO admin1 VALUES (4, 'admin3', 'www.cnblogs.com/94yy','94yy@qq.com', 4);
INSERT INTO admin1 VALUES (5, 'admin4', 'www.cnblogs.com/94yy','94yy@qq.com', 5);

然后打开http://localhost/test.php?id=1一个注入页面就构成了。

转载于:https://www.cnblogs.com/94YY/archive/2011/05/20/2051593.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CTF(Capture The Flag)竞赛中,常见的一个攻击技术是PHP代码注入PHP Code Injection)。这种攻击利用了应用程序对用户输入的不充分验证和过滤,使得攻击者能够将恶意的PHP代码注入到应用程序中,从而执行任意代码或实施其他攻击。 以下是一些常见的PHP代码注入漏洞场景和防范措施: 1. 用户输入的直接执行:如果应用程序直接将用户输入作为PHP代码执行,而没有进行充分的验证和过滤,攻击者可以通过提交恶意代码来执行任意操作。防范措施是使用合适的输入验证和过滤,例如使用白名单来限制允许的操作或使用安全的函数来处理用户输入。 2. 变量覆盖:如果应用程序在解析用户输入时,没有正确处理变量覆盖的情况,攻击者可以通过构造特殊的输入来覆盖应用程序中的变量,并执行恶意操作。防范措施是在处理用户输入之前,将其赋值给新的变量,并确保不会被覆盖已有的变量。 3. 文件包含漏洞:如果应用程序在包含文件时没有进行充分的验证和过滤,攻击者可以通过构造特殊的文件路径来包含恶意的PHP代码文件。防范措施是使用白名单来限制允许包含的文件路径,并对用户输入进行适当的过滤和验证。 4. 数据库查询注入:虽然不是直接的PHP代码注入,但数据库查询注入漏洞可能导致执行恶意的SQL语句,从而进一步执行PHP代码。防范措施是使用参数化查询或预处理语句,避免直接将用户输入拼接到SQL查询中。 总之,要防范PHP代码注入漏洞,开发者应该始终进行充分的输入验证和过滤,使用安全的函数和方法处理用户输入,避免直接执行或拼接用户输入作为代码执行。同时,定期更新和修复应用程序中使用的框架、库和组件,以确保使用的是最新的安全版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值