Java教程

SQL注入之简单手工注入

本文主要是介绍SQL注入之简单手工注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SQL注入原理:

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

 

按数据提交类型可分为:

 

SQL注入的防御:

 

一般步骤:

 

简单的POST注入:

题目来源:Bugku CTF

使用工具:Firefox浏览器,Hackbar插件

步骤:

1.打开网站,发现输入数字可以显示学生成绩

 2.使用Hackbar查看post data

3.输入 ' 发现正常显示id=1时的页面,故闭合字符为 '

 4.输入 and 1=2 和 and 1=1 -- -查看显示页面(--为注释符,代表将后面的语句全部注释,后边要加空格,故写作-- -)

 5.使用order by语句判断列数,从order by 1开始判断,发现当输入order by 1,2,3,4,5时无法正常显示成绩,故可判断列数为4

 6.判断显示位,利用联合查询输入id=4' and 1=1 union select 1,2,3,4-- -,并使用version()函数爆出数据库版本(注意:前方的id要改为不能查询到成绩的id,这样后面才能显示出需要的信息)

 7.使用database()函数爆出数据库名

8.使用group_concat()函数爆出表名(group_concat()函数作用见文末)

 9.先爆出所有的列名

 10.爆出fl4g表中的列名

 11.爆出skctf_flag的字段名,得到flag

 

Tips:

--01.在MySQL5.0以上版本都存在information_schema数据库,相关结构如下

--02.group_concat()函数的作用是将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

这篇关于SQL注入之简单手工注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!