一、学习方法
一边查看源码,一边多方学习别人的 WriteUp,在此过程中补充基础知识,最终落到实验操作。慢慢来,比较快。欢迎大咖指导,欢迎各位网友交流经验。
二、HTTP GET 方法与 PHP $_GET 变量
查看 Less-1 的 PHP 源码,源码通过 HTTP GET 方法获取了一个字符串形式的变量值,即$id = $_GET['id'];
,随后该字符串形式的变量值被应用于构造一个 SQL 查询语句,即$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
。
什么是 HTTP GET 方法?说实话,到现在为止,我也还不是很能理解。在这里需要记住的就是,我们通过 HTTP GET 方法向 PHP 的 $_GET 变量传递变量名称和值(值以字符串形式存在且不能超过2000个字符),即 URL 链接 “http://localhost/sqli-labs/Less-1/?id=1” 后面的 id 和字符串 “1”。另外,W3Cschool 里面有关于 PHP 的 $_GET 变量的详细介绍(https://www.w3cschool.cn/php/php-get.html)。
通过 HTTP GET 方法传递的变量名是否区分大小写?通常不作区分,服务器应该具备处理这种情况的能力。通过 HTTP GET 方法传递的值可以是什么类型的?ASCII 字符类型。并且 URL 中的请求数据通过符号 & 连接。
三、数据库查询过程
现在,我们已经知道 PHP 变量 $id 中存放的是一串字符串,并且这个字符串的内容正好是 URL 中 “http://localhost/sqli-labs/Less-1/?id=1” 的等号后面的内容。接下来,我们来看一看 PHP 所构建的