当前位置:首页 » 网站资讯 » php网站怎么攻击
扩展阅读
计算机网络网关作用 2025-07-04 14:20:42

php网站怎么攻击

发布时间: 2022-07-15 20:59:00

⑴ php如何黑别人网站

呃,心存善念。
黑别人网站,对方只是某些服务不到位,不能一杆子打死一堆人啊。
网上很多攻击方式,如:sql注入攻击、挂马等等。
协商解决问题就好,如果被你试出了对方网站有bug,给对方提醒下。

最后,黑人家网站是不鼓励滴。

⑵ html或php代码怎么写攻击的,就是,一个正常网站,背后一直在攻击一个IP,求代码(虚拟空间的)

很容易,curl可以实现,命令行ping也可以实现,html是xss攻击,

⑶ 如何对php中常见漏洞进行攻击与防护翻译

[全局变量]
PHP中的变量不需要事先声明,它们会在第一次使用时自动创建,它们的类型也不需要指定,它们会根据上下文环境自动确定。从程序员的角度来看,这无疑是一种极其方便的处理方法。很显然,这也是快速开发语言的一个很有用的特点。一旦一个变量被创建了,就可以在程序中的任何地方使用。这个特点导致的结果就是程序员很少初始化变量,毕竟,当它们第一次创建时,他们是空的。

很显然,基于PHP的应用程序的主函数一般都是接受用户的输入(主要是表单变量,上载文件和Cookie等),然后对输入数据进行处理,然后把结果返回到客户端浏览器。为了使PHP代码访问用户的输入尽可能容易,实际上PHP是把这些输入数据看作全局变量来处理的。

例如:

<FORM METHOD="GET" ACTION="test.php">
<INPUT TYPE="TEXT" NAME="hello">
<INPUT TYPE="SUBMIT">
</FORM>

很显然,这会显示一个文本框和提交按钮。当用户点击提交按钮时,“test.php”会处理用户的输入,当“test.php”运行时,“$hello”会包含用户在文本框输入的数据。从这里我们应该看出,攻击者可以按照自己的意愿创建任意的全局变量。如果攻击者不是通过表单输入来调用“test.php”,而是直接在浏览器地址栏输入http://server/test.php?hello=hi&setup=no,那么,不止是“$hello”被创建,“$setup”也被创建了。

译者注:这两种方法也就是我们通常说的“POST”和“GET”方法。
下面的用户认证代码暴露了PHP的全局变量所导致的安全问题:

<?php
if ($pass == "hello")
$auth = 1;
...
if ($auth == 1)
echo "some important information";
?>

上面的代码首先检查用户的密码是否为“hello”,如果匹配的话,设置“$auth”为“1”,即通过认证。之后如果“$suth”为“1”的话,就会显示一些重要信息。

表面看起来是正确的,而且我们中有相当一部分人是这样做的,但是这段代码犯了想当然的错误,它假定“$auth”在没有设置值的时候是空的,却没有想到攻击者可以创建任何全局变量并赋值,通过类似“http://server/test.php?auth=1”的方法,我们完全可以欺骗这段代码,使它相信我们是已经认证过的。

因此,为了提高PHP程序的安全性,我们不能相信任何没有明确定义的变量。如果程序中的变量很多的话,这可是一项非常艰巨的任务。

一种常用的保护方式就是检查数组HTTP_GET[]或POST_VARS[]中的变量,这依赖于我们的提交方式(GET或POST)。当PHP配置为打开“track_vars”选项的话(这是缺省值),用户提交的变量就可以在全局变量和上面提到的数组中获得。

但是值得说明的是,PHP有四个不同的数组变量用来处理用户的输入。HTTP_GET_VARS数组用来处理GET方式提交的变量,HTTP_POST_VARS数组用于处理POST方式提交的变量,HTTP_COOKIE_VARS数组用于处理作为cookie头提交的变量,而对于HTTP_POST_FILES数组(比较新的PHP才提供),则完全是用户用来提交变量的一种可选方式。用户的一个请求可以很容易的把变量存在这四个数组中,因此一个安全的PHP程序应该检查这四个数组。

[远程文件]
PHP是一种具有丰富特性的语言,提供了大量的函数,使编程者实现某个功能很容易。但是从安全的角度来看,功能越多,要保证它的安全性就越难,远程文件就是说明这个问题的一个很好的例子:

<?php
if (!($fd = fopen("$filename", "r"))
echo("Could not open file: $filename<BR>\n");
?>

上面的脚本试图打开文件“$filename”,如果失败就显示错误信息。很明显,如果我们能够指定“$filename”的话,就能利用这个脚本浏览系统中的任何文件。但是,这个脚本还存在一个不太明显的特性,那就是它可以从任何其它WEB或FTP站点读取文件。实际上,PHP的大多数文件处理函数对远程文件的处理是透明的。

例如:
如果指定“$filename”为“http://target/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir”
则上面的代码实际上是利用主机target上的unicode漏洞,执行了dir命令。

这使得支持远程文件的include(),require(),include_once()和require_once()在上下文环境中变得更有趣。这些函数主要功能是包含指定文件的内容,并且把它们按照PHP代码解释,主要是用在库文件上。

例如:
<?php
include($libdir . "/languages.php");
?>

上例中“$libdir”一般是一个在执行代码前已经设置好的路径,如果攻击者能够使得“$libdir”没有被设置的话,那么他就可以改变这个路径。但是攻击者并不能做任何事情,因为他们只能在他们指定的路径中访问文件languages.php(perl中的“Poison null byte”攻击对PHP没有作用)。但是由于有了对远程文件的支持,攻击者就可以做任何事情。例如,攻击者可以在某台服务器上放一个文件languages.php,包含如下内容:

<?php
passthru("/bin/ls /etc");
?>

⑷ 如何使用php代码攻击网站

学校居然还有这样的作业,就是你写好的php文件,在.php文件名后面添加一个任意的后缀名,然后上传上去,然后输入刚刚上传的文件名,就能执行php代码了

⑸ 如何入侵php网站

很多方法啊,比如:
直接上0day,慢慢渗透,直接去问站长要服务器链接信息~

⑹ 解决php网站开发常见的几种攻击方法

1.硬件防火墙
2.软件防火墙
3.系统架构
4.数据驱动层
5.数据库

⑺ 求高手回答 PHP网站怎么侵入怎么找后台

第一讲:判断有没注射点
这个很简单,我们最常用的就是看到页面的格式为:index.php?id=2这样的地址,我们知道PHP经常是和MYSQL数据库一起用的,在MYSQL数据库中一定存在一个表,比如setting_table,我们提交上面地址的时候,程序一般上这样处理的:
1、用GET或者POST取我们提交的id=1把这个值传给一个变量id.
2、查询:select * from setting_table where id =$id
上面的语句就是查询的语句,我们代入$id=1就是:
select * from setting_table where id=1
这话是没什么问题的,会取出id为1的信息进行显示给我们,所以我们就能看到正常的页面。 --------------
看我们是怎么判断的:
1、我们提交id=1 and 1=1
看看这个是什么效果,这里的$id就是1 and 1=1,我们看看是什么样子的:
select * from setting_table where id =1 and 1=1
这个语句加了一个and 语句,后面是1=1是肯定成立的,所以就不影响上面语句的成立,它还会取出id=1的信息进行显示给我们,所以我们看到的还是原来的正常页面。
2、我们提交 id =1 and 1=2
看看这个是什么效果,这里的$id就是 1 and 1=2,我们看看在SQL中怎么执行
select * from setting_table where id =1 and 1=2
分析下这个语句,前面还是一样的,只是最后加了个and 1=2,这个自然不成立啦!又因为是and连接的,so自然找不到符合条件的啦!只能回显给我们一个错误或者空白的页面拉~!!
上面就是一般我们采用and 1=1 & and 1=2来判断的基本原来,但是这里还要注意几点,如下:
1、程序处理的时候必须是where id =$id 而不是where id=$id,这个单引号是很不一样的,怎么不一样,以后再说。。
2、程序对我们提交的参数没有处理或者处理的不好,导致我们可以直接提交,如果程序多我们提交的参数进行处理,又会不一样,也是后话!
第二讲:快速判断MYSQL版本
前提:你得到一个注射点,比如:news.php?id=1
这个点是你找到的,提交and 1=1 和and 1=2返回的是不同的。
我们就可以这样来猜MYSQL的版本了。。步骤如下:
1、提交/news.php?id=1/*!40000%20s*/如果返回正常就说明MYSQL版本在4000版本以下,你可以依次调节最高位的数字,比如我改为39000提交,如果再正常,就提交38000....直到返回错误提示,最后固定的那个就是MYSQL的版本了。。
下面是我提交测试时的过程(只写MYSQL版本)
40000(+)--39000(+)--38000(+)--370000(-)--37900(+)--37800(+)--37700(-)--结束!!
得到MYSQL版本是37700。
2、一般我们不去猜具体的版本,我们只关系MYSQL是不是在4.0以上,以为只有4.0以上的MYSQL才支持UNION查询,以下是不支持的,所以我们经常只用/*!40000%20s*/看看是不是4.0以上的版本。
PS:/*!40000%20s*/这里的/*!......*/是mysql里一种特殊的注释方式,也没什么好奇怪的,记得怎么用就可以了~~
第三讲:PHP注射怎样得到表名。。
正准备写,看到有人问到了,就总结下,算第三讲吧! Quote:
Originally posted by spirit at 2006-5-16 05:57 PM:
看了好多 文章了 ....眼睛都花了
里面涉及到的东西也比较全面
不过 一直不知道怎么搞出 表
总不能直接搞 去 字段吧..??
一个一个来啊
数据库 表 字段 值...
这个逻辑我认为是对的 ....
对了这里还是 感 ...
表确实不好搞,不像ASP可能直接暴出来,PHP到现在还是暴不出来的,我们一般有两个办法:
1、靠经验猜:比如大家常用的admin,user,news,vote,wenzhang,guanliyuan等等,没办法的事。。
2、暴代码查看:用Load_file暴出文件代码,就可以看到数据插值到什么表,什么字段了,这样就很明白了,但是load_file也很有技巧的。。以后再讲。。
--------------------------------------------
具体说一下吧:
1、这个没什么好说的,直接猜就可以了,比如你看到一个注射点,类似news.php?id=1这样的点,你用union查询得到具体的字段,比如这样:news.php?id=1 and 1=2 union select 1,2,3,4 是成立的,
你就可以这样猜:news.php?id=1 and 1=2 union select 1,2,3,4 from admin/*如果存在admin表,就会返回真,否则就不存在表admin,其他和这个一样的。
2、这个就有点终极了,比如你得到他的绝对路径,可以load_file(file path)出文件的代码,比如你暴得管理员登陆的页面,就能看到他其中的SQL语句,可以看到他是从哪个表了取的值了,是吧》》
原理就是这样的,多多思考,有什么心得,希望能分享。。。。
第四讲:有无引号的差别
很多朋友都对那个引号的作用不很了解,认为加引号和不加是一样的效果..
引号(包括单、双)对我们的注射是有着很大的影响的,这里主要还是和magic的状态有关,当这个magic为off的时候倒没什么影响,当这个magic为on的时候就大不一样了。。
小知识:magic为on时,为自动为我们提交的单引号(‘),双引号(“),(\),空格( )等加上转意 符号\,使得上的都变成(\’),(\”),(\\)等,这就给我们注射太来麻烦,例子如下。
一、第一个例子(没引号)
如果语句如下:
QUOTE:
select * from news where newsid=$id
1、magic为off时情况
为off时不会处理我们提交的数据信息,假设一个SQL语句是这样的;
我们在URL中可以提交$id的值,就像我们前面说的给$id为:
$id=1 union select 1,2,3,4 from admin
就基本上可以取得我们想要的数据了。
2、magic为on时情况
这时没什么区别,因为我们没有提交敏感的字符
二、第二个例子看它处理的SQL语句:
QUOTE:
select * from news where newsid=$id
这时要想成功利用$id这个没过滤的参数,我们可以提交如下:
$id=1’ union select 1,2,3,4 from admin/*
开始要有一个()来闭合前面的,后面再加一个/*注释掉后面的
1、magic为off时情况
如果magic为off,我们可以直接提交,成功利用
2、magic为on时情况
如果magic为on,那么我们提交的语句变成:
$id=1\’ union select 1,2,3,4 from admin/*
看,就没办法利用了(尽管有漏洞)

⑻ PHP代码网站如何防范SQL注入漏洞攻击建议分享

做为网络开发者的你对这种黑客行为恨之入骨,当然也有必要了解一下SQL注入这种功能方式的原理并学会如何通过代码来保护自己的网站数据库。今天就通过PHP和MySQL数据库为例,分享一下我所了解的SQL注入攻击和一些简单的防范措施和一些如何避免SQL注入攻击的建议。
简单来说,SQL注入是使用代码漏洞来获取网站或应用程序后台的SQL数据库中的数据,进而可以取得数据库的访问权限。比如,黑客可以利用网站代码的漏洞,使用SQL注入的方式取得一个公司网站后台数据库里所有的数据信息。拿到数据库管理员登录用户名和密码后黑客可以自由修改数据库中的内容甚至删除该数据库。SQL注入也可以用来检验一个网站或应用的安全性。SQL注入的方式有很多种,但本文将只讨论最基本的原理,我们将以PHP和MySQL为例。本文的例子很简单,如果你使用其它语言理解起来也不会有难度,重点关注SQL命令即可。
一个简单的SQL注入攻击案例
假如我们有一个公司网站,在网站的后台数据库中保存了所有的客户数据等重要信息。假如网站登录页面的代码中有这样一条命令来读取用户信息。
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.$_GET['username'].
"
'
AND
`password`=
'
"
.$_GET['password'].
"
'
";?>现在有一个黑客想攻击你的数据库,他会尝试在此登录页面的用户名的输入框中输入以下代码:
'
;
SHOW
TABLES;
点击登陆键,这个页面就会显示出数据库中的所有表。如果他现在使用下面这行命令:
';
DROP
TABLE
[table
name];
这样他就把一张表删除了!
防范SQL注入
-
使用mysql_real_escape_string()函数
在数据库操作的代码中用这个函数mysql_real_escape_string()可以将代码中特殊字符过滤掉,如引号等。如下例:
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
";?>防范SQL注入
-
使用mysql_query()函数
mysql_query()的特别是它将只执行SQL代码的第一条,而后面的并不会执行。回想在最前面的例子中,黑客通过代码来例后台执行了多条SQL命令,显示出了所有表的名称。所以mysql_query()函数可以取到进一步保护的作用。我们进一步演化刚才的代码就得到了下面的代码:
//connection
$database
=
mysql_connect("localhost",
"username","password");
//db
selection
$q
=
mysql_query("SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
",
$database);?>除此之外,我们还可以在PHP代码中判断输入值的长度,或者专门用一个函数来检查输入的值。所以在接受用户输入值的地方一定要做好输入内容的过滤和检查。当然学习和了解最新的SQL注入方式也非常重要,这样才能做到有目的的防范。如果使用的是平台式的网站系统如Wordpress,要注意及时打上官方的补丁或升级到新的版本。

⑼ 如何攻击php网站,欺骗后台程序!高手指点!

都是做php的,你却来攻击php程序!

⑽ 怎样攻击网站啊

网站是架设在服务器上的。
也就是说,你只要找到那台电脑的漏洞,入侵他就可以了。
实在无耻点就发动肉鸡DDOS就行了,如果流量大,马上就无法访问了!

开始>运行>cmd>ping xxx.xxx.xxx(那个网站的地址)>得到IP后用工具扫描他漏洞就可以了!不过一般找不到可用的漏洞,那你可以去尝试找网站的漏洞!