当前位置:网站首页>CISP-PTE之SQL注入(二次注入的应用)
CISP-PTE之SQL注入(二次注入的应用)
2022-07-05 15:28:00 【炫彩@之星】
CISP-PTE实操题之SQL注入
前言
很久没有给大家发文章了,因为最近在准备CISP-PTE的考试,所以在加紧时间练习中,最近发现实操题中SQL注入又很经典的二次注入的题型,想给大家分享一下做题的方法。
一、实操题之SQL注入
因为这道SQL注入题比较麻烦,讲解比较麻烦,就先用一篇文章专门写这道SQL注入题,后期会更新新的题型讲解。
二、解题步骤及方法
1.寻找解题出思路
从题意中我们可以看出,答案就在我们的数据库里,只需要寻找突破点,注入语句,就可以获取答案了。我们点击进去看看。
发现是一个文章发表系统。我们尝试登录 一下,用弱口令试一下
登入失败,只能注册看一下了
注册了一个hao,123的用户,发现可以进行注册
进去后,看到之前发表的文章,现在尝试发表一下文章,看看是否有注入点
填入数据后,成功插入
我们插入一个乱码和符号看看
当我们插入单引号和注释符的时候,出现报错,说明存在注入点,接下来开始插入SQL语句进行注入。
2.执行SQL注入语句
这时我们就要看用什么注入方法才好呢,通过看题干发现,过滤了’–'和#号,且无法进行直接填入,提交后也无法显示数据库信息,这时我们就会想到二次注入的方法,进行注入SQL查询语句,二次注入的原理和方法在前面的渗透测试专栏已经讲解过了,大家可以回头看看。
(1)首先注册两个账号,以我的示例就是hao,*/‘hao’)#,密码都是123
原理是这样,如下图:
利用二次注入以及注入半闭合完成注入,先在*/’1234ewq’);#浏览器插入文章内容,poc依次如下
AAA’,(select database()),/*
AAA’,(select group_concat(table_name) from information_schema.tables where table_schema like 0x32776562),/*
AAA’,(select group_concat(column_name) from information_schema.columns where table_schema like 0x32776562 and table_name like 0x61727469636C6531 ),/*
AAA’,(select group_concat(content) from (select * from article1 limit 0,1)as a ),/*
返回正常用户1234ewq
这里解答一下,利用//来注释多余的引号,致使我们插入的select语句能够显示出来,其次由于二次注入用户*/’1234ewq’);#最后插入至表中的用户名实际为 1234ewq 所以需要在正常用户去查看
让我们看一下效果吧
利用难度:
首先屏蔽注释符#、–,但是在注册的时候并没有屏蔽注释符,由于mysql特性,//里面的内容会被注释掉,且insert into 表名 value() 方法需要对字段一一填充,也就是说多一个字段不行,少一个字段也不行;且只有2/3字段才能显示出来,故先注册一个二次注入用户名,而后再插入语句中借助二次注入用户名进行特殊闭环,形成
insert article1 value(’’,‘AAA’,(select database()),/’,’’,’/ ‘1234ewq’);#’)
这样插入至数据库则会变成这样
insert article1 value(’’,‘AAA’,(select database()), ‘1234ewq’)
其次就是插入后进行字段查询,由于article1 表出现相同表名会导致数据库死循环,报错,故需要进行as别名,且若是不加入limit语句进行限制,则会无法导出任何内容,limit任意值皆可
以上是网上的详细的解答方法,就是帮助大家理解,我来讲解一下我的方法
先登录*/‘hao’)#账号,这样注册的账号原理,上面已经讲的很清楚了,就是为了注释掉前面和后面的引号和逗号
(2)我们登录进去进行发表文章,接下来就是进行提交SQL语句了,因为这里提交是看不到的,实际上是提交到hao的账号里去了
(3)SQL手工注入方法
select schema_name from information_schema.schemata(查库)
select table_name from information_schema.tables where table_schema=库名(查表)
select column_name from information_schema.columns where table_name=表名(查列)
select 列名 from 库名.表名(查数据)
先查看有哪些库
插入成功
再看看库有哪些表
插入成功
这时,我们通过插入的结果可以看出插入的是article1表
接下来看看表中有哪些字段
表中都有这些字段,这时答案最有可能的是出现在title和content上,所以我们开始查数据,将数据全部输出来
我们可以看到答案就在content字段里,且并不是第一行,而是随机的一行里,所以要多限制几行数据。
答案就是:key1:u9y8tr4n
总结
这道SQL注入题就解析到这里了,希望大家可以好好看看解题思路和二次注入的方法。下次会更新新的CISP-PTE实操题给大家。
边栏推荐
- vulnhub-FirstBlood
- Maximum common subsequence
- 记录一下树莓派搭建环境中遇到的坑。。。
- Summary of the second lesson
- JS topic - console log()
- Virtual base class (a little difficult)
- Background system sending verification code function
- 对象和类的关系
- Which keywords will conflict with the abstract keyword
- 16. [stm32] starting from the principle, I will show you the DS18B20 temperature sensor - four digit digital tube displays the temperature
猜你喜欢
CODING DevSecOps 助力金融企业跑出数字加速度
keep-alive
JS knowledge points-01
Optional parameters in the for loop
【 note 】 résoudre l'erreur de code IDE golang
Information collection of penetration test
18.[STM32]读取DS18B20温度传感器的ROM并实现多点测量温度
Object. defineProperty() - VS - new Proxy()
21.[STM32]I2C协议弄不懂,深挖时序图带你编写底层驱动
abstract关键字和哪些关键字会发生冲突呢
随机推荐
Basic JSON operations of MySQL 5.7
Replknet: it's not that large convolution is bad, but that convolution is not large enough. 31x31 convolution. Let's have a look at | CVPR 2022
Data communication foundation - dynamic routing protocol rip
Six common transaction solutions, you sing, I come on stage (no best, only better)
MySQL table field adjustment
Noi / 1.5 06: element maximum span value of integer sequence
Which keywords will conflict with the abstract keyword
Summary of the second lesson
JS knowledge points-01
SQL injection sqllabs (basic challenges) 11-20
示例项目:简单的六足步行者
Parameter type setting error during batch update in project SQL
视觉体验全面升级,豪威集团与英特尔Evo 3.0共同加速PC产业变革
Write a go program with vscode in one article
Modify PyUnit_ Time makes it support the time text of 'xx~xx months'
RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022
Virtual base class (a little difficult)
19.[STM32]HC_SR04超声波测距_定时器方式(OLED显示)
vant popup+其他组件的组合使用,及避坑指南
Appium自动化测试基础 — APPium基础操作API(二)