代码审计1

  在开始练习之前,我们以Less-1为例对php代码进行审计。这样,在后续关卡,我们大多数时间只需要关注其与Less-1不相同的地方即可。

  sqli-lab-PHP7-master的程序均采用面向过程的书写方式编写,对有C基础的人来说较易上手。

index.php:

 

 第一行是一个使用相对路径的文件包含,相当于直接把改文件写在这句代码的位置。

sqli-connect.php

 

 在sqli-connect中,

  $con1使用我们之前设置的参数,建立了一个到mysql的连接;

  @mysqli_select_db将我们之前设置的数据库设为默认数据库,即正常情况下,查询只能在该数据库中进行。

回到index,

  isset() 函数用于检测变量是否已设置并且非 NULL。$_GET[]存储通过GET方法从网页获得的数据。

  $fp那几句是耳熟能详的文件写入操作,负责记录我们输入的每次命令。

  $sql存储了查询的语句;‘$id’将刚才的输入直接拼接进去。

    php对单引号包裹的字符完全原样输出,对双引号包裹的字符先尝试转义后再输出。然而,在$sql中,单引号被双引号包裹,无法起到前述作用,是被输出的部分。

    mysqli_query()执行了一次查询。对于此处的select语句,它的返回值是一个mysqli_result类对象。

      (mysqli_result类中的成员属性
        $current_field:获取当前结果中指向的字段偏移位置,是一个整数。
        $field_count:从查询结果中获取列的个数。
        $lengths:返回一个数组,保存在结果集中获取当前行的每一个列的长度。
        $num_rows:返回结果集中包含记录的行数。)

    mysqli_fetch_array函数从$result中取得关联数组。

  若$row中有内容,则输出查询结果,否则报错。

 

posted @ 2021-09-11 15:26  hiddener  阅读(50)  评论(0编辑  收藏  举报