首页 > 数据库 >利用cookie进行SQL注入——看来还是人工注入要熟悉才行

利用cookie进行SQL注入——看来还是人工注入要熟悉才行

时间:2023-06-01 11:36:16浏览次数:42  
标签:-- 才行 uname Cookie cookie union select 注入

Less-20

    基于错误的cookie头部POST注入

首先从已知的条件中我们知道这又是一道“头部注入”,那么我们先输入正确的用户名和密码看一下登录成功是什么样子的:

        回显有User-Agent、IP这样从当次Request直接获取的,
        也有Cookie这样刷新页面后仍存在的,
        还有登录用户的id、username、password。
        最下方是删除Cookie的按钮,点击后刷新到初始界面。

从题意中我们大致可推断出注入点在cookie上:(查看后台核心源码:)

   
可以看到查询语句查询变量$cookee,且是单引号字符型,那么我们就在cookie里注入:
我们先查看一下请求头中的cookie值,我们可以有很多方法查看:

        burpsuite抓包,看响应头
        Chrome插件Edit This Cookie查看,存储的Cookie信息:
        浏览器,按F12,在“网络”中查看,看响应头

1.burpsuite抓包过程:

2.Chrome插件Edit This Cookie查看,存储的Cookie信息:(没用过,截取别人的)

可以看到只存储了uname这一个字段的信息,且是明文存储。
修改Cookie后刷新界面:

3.F12查看

从上面的操作中,可知操作流程:

        登陆后将uname写入Cookie。
        在每次Request (GET / POST)页面时后台判断Cookie是否存在,若不存在则为登录界面;若存在则读取Cookie中字段uname。
        在数据库中按username查询,若用户存在则将查询到用户id、username、password回显;若不存在…

    可以判断出注入点就在Cookie处,但是这里注入有三种途径:

        用Chrome插件EditThisCookie修改本地Cookie文件注入。
        用Firefox浏览器插件HackBar修改本地Cookie文件注入(这个并不是很好用,不推荐用)。
        用Burpsuite修改登陆(POST)成功后刷新时GET请求头中的Cookie值注入,这种方式不会修改本地的Cookie文件。

这里演示第二个途径:
我们得出后台根据Cookie中的uname查询用户的所有信息,即这是个SELECT语句,我们可以使用最简单的UNION注入。
1.判断字符型 / 数字型注入
爆出语法错误,看得出来就是单引号型;
2.判断字段数与回显字段

uname=Dumb' order by 4 -- #

uname=1' union select 1,2,3 -- #

    PS:

    关于获取字段的小技巧:我们从后台源码中,一般只要看到 select * from 表名,一般是要猜这个表里的所有字段,然后进行注入,如果是 select username,password from 表名,这种形式的可以直接利用2个字段,作为语句的注入字段。

3.暴库:

uname=1' union select 1,2,database() -- #

暴表:

uname=1' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema='security' -- #

暴字段:

uname=1' union select 1,2,group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users' -- #

暴数据:(这两种其实是一样的)

uname=1' union select 1,2,group_concat(username,0x7e,password)from security.users -- #

uname=1' union select 1,2,group_concat(concat_ws('-',id,username,password)) from users# -- #

上面就是简单的基于报错的注入

标签:--,才行,uname,Cookie,cookie,union,select,注入
From: https://blog.51cto.com/u_11908275/6393017

相关文章

  • 进程注入分析实战——通过process explorer可以看到lab12-01.dll在运行时加载了, 要查
     要查看dll被哪个进程所使用,可以在processexplorer里搜索!  这个技巧在分析恶意DLL加载时候非常有用!!!笔记可以通过processexplorer查看进程注入的dll,比如注入后可以看到lab12-01.dll在注入的运行进程里。    启动器Launcher用来加载恶意代码使用,通常在资源中包含一个exe或d......
  • Jmeter Cookie 设置不起效解决
    使用HttpCookieManager不能将前一个请求设置的Cookie传递到下一个请求。特别是对于一些 使用302重定向的页面。解决方案是使用 BeanShellPreProcessornewCookie(name,value,domain,paht,secure,length)name:要设置的cookienamevalue:要设置的value,可以是......
  • php导入csv注入
    以下是一段可以导入CSV文件的PHP代码:$file=fopen("data.csv","r");while(!feof($file)){$data=fgetcsv($file);//将数据插入数据库中$sql="INSERTINTOusers(name,age,email)VALUES('$data[0]','$data[1]',�......
  • sql注入-DNSlog注入
    sql注入-DNSlog注入使用场景:由于在盲注过程中,手工测试需要花费大量的时间,我们可能会想到使用sqlmap直接去跑出数据但在实际测试中,使用sqlmap跑盲注,发包太多,网站很可能把ip给封掉,也许你会考虑使用代理池这个时候可以尝试利用DNSlog注入,可以快速得到结果原理:在某些无法直接......
  • Cookie、Session、Token、LocalStorage、SessionStorage
    Cookie简介:HTTP是无状态的,服务器无法记录收到的每一次请求,意味着服务器无法识别不同的请求是否来自相同的客户端。Cookie是服务器创建的一个对象,在收到客户端请求后,携带在响应头(Set-Cookie)中返回给客户端,客户端将Cookie存到本地,在下一次请求中将Cookie信息放到请求头发......
  • 多线程或监听器@Autowired注入null空指针
    //问题:在多线程中使用@Autowired注入IUserService时,userService使用时为null,获取不到bean//原因:newthread不在spring容器中,也就无法获得spring中的bean对象;@AutowiredprivateIUserServiceuserService;//解决:手动获取bean对象privateIUserServiceuserService=AppCo......
  • 西门康IGBT模块存在sql注入 QTVA-2023-3632489
    网址:http://www.gl-igbt.com/product.php?id=6 漏洞描述: 西门康igbt模块,采购平台,便捷购买,专业代理,售后无忧,大量现货供应,模块齐全,可直接供货,一键下单,整流桥功率,西门康一站式采购平台,可长期稳定供货 西门康IGBT模块存在sql注入漏洞,攻击者可利用该漏洞获取数据库......
  • 悦才教育咨询 存在sql注入
     网址:http://joytalentedu.com/single-blog-post.php?id=387漏洞描述:悦才教育咨询(扬州)有限公司是一家针对于促进中美教育学术文化交流的平台型公司,并非传统留学机构,公司注重“深度挖掘潜力,精准匹配适求”的理念以希望最大程度的开发每一位孩子的潜力,并用专业的角度辅助孩子发......
  • 找到网站中的cookie
    1.右键“检查”   2.选中“application”: 3.点击“cookies”(这里的cookies是按照网站进行分类的) 4.cookie为key:value形式的组合: 4.cookieeditor插件可以批量导出cookie,复制cookie,粘贴cookie:  export导出: 另一个浏览器导入:  粘贴: ......
  • sql注入学习笔记
    sql注入基础的sql语句注入1'or'1'='1'# #or语句1'orderby3# #order语句1'unionselect1,2,3# #联合查询1'and(selectextractvalue(1,concat('~',(selectdatabase())))) #报错注入1'andif(length(database())>1,sleep......