0x01 GET请求
php代码如下:
<?php
//通过网址连接传来参数:GET
$username = $_GET['username'];
$password = $_GET['password'];
//PHP中连接字符串用`.`连接
echo 'username: '.$username;
echo '<br>';
echo 'password: '.$password;
?>
直接访问该PHP代码:
url后输入传参 username
和 password
http://localhost/learning/test_get.php?username=admin&password=123345
此为通过GET请求来传参
若参数中有特殊符号:
这里假设password为123&
此处用到url编码,先把&
编码成%26
,url中把&
写成123%26
若多个参数都有特殊符号,则需要使用burpsuite工具
在Repeater
中send
可以更改GET或者POST
在右侧 Inspector
中进行更改
Value
中可以更改编码
0x02 POST请求
<?php
$username = $_POST['username'];
$password = $_POST['password'];
//PHP中连接字符串用`.`连接
echo 'username: '.$username;
echo '<br>';
echo 'password: '.$password;
?>
POST请求需要通过代码或者burpsuite
传参
在burpsuite
中先改为POST
请求,
修改Inspector
中的Request Body Parameters
即可。
0x03 区别
POST
相比GET
安全一些,因为GET
请求的参数直接暴露在URL
上。- 所以敏感信息不要使用
GET
参数传递。
- 所以敏感信息不要使用
- 一般来说URL不宜过长,所以需要传递的数据比较大,使用
POST
请求传递,而不是GET
。
0x04 表单提交的方式
GET
<html>
<body>
<form action="test_get.php" name="login_form" method="get">
<table>
<tr>
<td>用户名</td>
<td>
<input type="text" name="username"/>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="password" name="password"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="登录">
</td>
</tr>
</table>
</form>
</body>
</html>
登录后,url上显示username和password。
POST
<html>
<body>
<form action="test_post.php" name="login_form" method="post">
<table>
<tr>
<td>用户名</td>
<td>
<input type="text" name="username"/>
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="password" name="password"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="登录">
</td>
</tr>
</table>
</form>
</body>
</html>
登录后,url上不显示
0x05 数据库操作
创建一个test
先随便创建个数据库:
PHP中,单引号中是什么就输出什么,双引号是取其中的值;
单引号里可以有双引号,双引号里可以有单引号。
查询数据库代码如下:
<?php
// 连接数据库
$con = mysqli_connect('127.0.0.1', 'root', 'root');
// 选择test数据库
mysqli_select_db($con, "test");
// 查询数据
$id = $_GET['id'];
$sql = "select * from users where id='$id' limit 0,1";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result); //把结果转换为一个数据存在row中
if($row){
echo 'username: '.$row['username'];
echo '<br>';
echo 'place: '.$row['place'];
}
else{
echo 'no result!';
}
若传入id=1
若什么也不传