<?php echo 'hrllo,world'; #echo是php的输出函数. #每行代码必须以分号;结尾 ?>
<?php $a=2; #变量以$符号,变量名称对大小写敏感. $b=3; #可以直接通过赋值来指定变量类型. $c=$a+$b; #双引号中变量会被解析执行. echo "$a+$b="."$c"; #2+3=5(点号.用于连接字符串的) ?>
<?php #在浏览器中查看到的源码 $a=2; #<h1>2+3=5</h1> $b=3; #双引号中变量会被解析执行. $c=$a+$b; echo "<h1>$a+$b="."$c</h1>"; ?>
<?php $a=100; echo (isset($a)); #isset()函数是判断变量是否存在,存在返回值1,不存在返回值空. ?>
//这是单行注释. #这也是单行注释. /* 这是多行注释块. 它横跨了. 多行. */
<?php #全局变量: $username=$_GET['username']; #$_GET,接收通过get方式传递数据. $password=$_GET['password']; #$_POST,接收通过post方式传递数据. echo "<p>用户名:"."$username</p>"; #$_REQUEST,接收通过get或post方式传递数据. echo "<p>密 码:"."$password</p>"; ?>
<html> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> <title>登录</title> </head> <body> <form action="bgxg.php" method="get"> <!--bgxg.php是接收表的文件名,get是接收表的传递方式.--> <p>用户名:<input type="text" name="username"></p> <p>密 码:<input type="text" name="password"></p> <p><input type="submit" value="确定"></p> </form> </body> </html>
<?php $username = $_REQUEST['username']; $password = $_REQUEST['password']; if($username == "admin" and $password == "123"){ #在进行判断时,等于要使用“==”,“=是” 专用于给变量赋值. echo "你好,$username"; #and 之前的语句执行成功时,才会执行后面的语句. }else{ echo "请输入正确的用户名"; } ?>
<?php $sum = 0; for ($i=1;$i<=10;$i++){ $sum = $sum + +$i; } $i=$i-1; echo "1累加到$i"."的和是$sum"; ?>
<?php $sum=0; $i=2; while ($i<=12){ $sum=$sum+$i; $i++; } $i =$i-1; echo "2累加到$i"."的和是$sum"; ?>
mysql_connect("localhost","root","123"); #通过php连接上Mysql,localhost是IP地址. mysql_select_db("test"); #选择要操作的数据库,"test"是数据库的名字. mysql_query("set names utf8") #设置客户端和连接字符集. #通过php进行增删改查 mysql_close($conn); #释放连接资源(就是断开连接)
$username = $_GET['username']; $password = $_GET['password']; $conn = mysql_connect("127.0.0.1","root","123"); #通过php连接上Mysql,127.0.0.1是IP地址. mysql_select_db("test"); #选择要操作的数据库,"test"是数据库的名字. mysql_query("set names utf8") #设置客户端和连接字符集. $sql = "select * from hack where username = '$username' and password = '$password'"; #在(hack)数据库里查询,查询的条件(where)为:username = '$username' and password = '$password' $res = mysql_query($sql,$conn); # mysql_query 这个函数的执行语句的. if (mysql_num_rows($res) !=0) { #if是判断,mysql_num_rows是行,就是统计($res)变量有几行. echo "登录成功"; }else{ echo "登录失败"; } mysql_close($conn); #释放连接资源(就是断开连接)
(1)mysql_query( )如果是执行查询之类的语句( select ),那么会返回一个资源标识符,也就是我们要查找的数据结果集.
(2)mysql_query( )如果是执行增删改之类的语句,返回的就是true或者false了.
if(isset($_GET['Submit'])) #isset函数是判断是否存在的(也就是:判断Submit变量是否存在.) $id = $_GET['id']; #获取id变量的值并赋值给变量$id. $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id"; #将select查询语句赋值给变量$getid $result= mysql_query($getid) or die('<pre>'.mysql_error().'</pre>'); #(1)mysql_query()函数执行mysql查询. #(2)die()函数输出一条消息,并退出当前脚本. #(3)mysql_error()函数返回上一个MySQL操作产生的文本错误信息. #(4)or之前的语句执行不成功时,才会执行后面的语句. #(5)and之前的语句执行成功时,才会执行后面的语句。
$num = mysql_numrows(Sresult); #返回结果集中行的数目. $i = 0; while ($i< $num) { #mysql_result函数是返回结果的一个字段的值. $first = mysql_result($result,Si,"first_name"); #返回结果集中first_name字段的值. $last = mysql_result($result,Si,"last_name"); #返回结果集中last_name字段的值. echo '<pre>'; #<pre> </pre>是html标签,意思是按原样输出不做更改。 echo 'ID:'.$id.'<br>First name:'.$first.'<br>Surname:'.$last; #主要是输出这个内容. echo '</pre>'; #<br/>是html语言里的换行符; $i++; }
$id = $_GET['id']; $id = mysql_real_escape_string($id); #mysql_real_escape_string()函数对用户输入的id参数进行了过滤. #可以将单引号【'】、双引号【"】、反斜杠【\】、空字符【null】等进行转义. #转义是把指定的字符转换成无意义的符号,比如PHP解析器不会把经过转义的引号当成引号来看待. #PHP中另一个功能类似的函数: addslashes()
magic_quotes_gpc魔术引号.
(1)在PHP配置文件php.ini中存在magic_quotes_gpc选项,被称为魔术引号.,
(2)在high级别下,PHP的magic_quotes_gpc被自动设为on.
(3)开启之后,可以对所有的GET、POST和CQOKIE传值的数据自动运行addslashes()函数
$id = $_GET['id']; $id = stripslashes($id); $id = mysql_real_escape_string($id); #stripslashes( )函数的作用是删除由addslashes()函数添加的反斜杠,也就是去除addslashes()函数的转义。
if (is_numeric(Sid)){ $getid = "SELECT first_name, last_name FROMusers WHERE user_id = "$id""; #在执行查询之前,使用了if语句进行判断,判断的条件是is_numeric()函数。判断用户输入的数据是否是数字型,只要不是数字型就—概报错。 #and、or、 select等语句都无法执行。
漏洞挖掘主要可以从以下几个方面着手:
(1)代码中负责获取用户数据的变量:S_GET、S_POST、$_COOKIE、$_SERVER。
(2)代码中负责执行数据库查询操作的函数:mysql_query()。
(3)在代码中对这些变量和函数进行搜索跟踪,从而分析是否存在漏洞。
(1)对于数字型注入,可以使用if语句,并以is_nuynber()函数作为判断条件进行防御.
(2)对于字符型注入,对用于接收用户参数的变量,用mysql_real_esca pe_string( ),addslashes( )等函数进行过滤.
参考链接:PHP 教程 | 菜鸟教程
参考链接:什么是php?php是什么?_北海拾贝的博客-CSDN博客_php是什么