0%

解题方法并不唯一,仅供参考。

题目打包下载地址

https://down.52pojie.cn/Challenge/Happy_New_Year_2020_Challenge.rar

第一题 送分题

关注“吾爱破解论坛”微信公众号,回复指定字符串即可获得本题正确口令。

第二题 Windows 初级题

使用PEiD查壳,得知该程序是UPX壳,并修改了区段名。于是使用OD脱壳,再用ImportREConstructor修复IAT。
再次查壳,得到Borland Delphi v3.0 *。故使用IDR爱盘下载地址)进行分析。
查看窗体,定位到关键函数TForm1.edtPwdChange

其中对输入字符串进行切片,然后分别进行md5计算,并与以下字符比较:
E7EE5F4653E31955CACC7CD68E2A7839
ea6b2efbdd4255a9f1b3bbc6399b58f4
c8d46d341bea4fd5bff866a65ff8aea9
反查md5并拼接即可得到52pojie2019game
输入进行校验,得到提示:

将该字符串回复到公众号即可获得本题正确口令。

第三题 Android 初级题

使用AndroidKiller反编译,打开MainActivity.smali,发现checkFlagonClick方法被nativie化了。
于是使用IDA打开libcrack_j2c.so,定位到onClick方法,可以发现是通过JNI反射调用Java方法。由此可以大致分析出程序流程:
首先获取输入框文本,对长度进行判断,为30则调用checkFlag方法进行检查
checkFlag方法中,定位到关键位置:

由此可知,安装并打开该APP后,输入30位长度的字符串,点击确定就会调用equals方法
于是使用Frida进行hook,打印出调用该方法的参数和实例内容,从而得到真码:
ed61f6308c74bcf35c71729d4db24c
将该字符串回复到公众号即可获得本题正确口令。
Frida脚本如下:

1
2
3
4
5
6
7
8
9
10
11
if(Java.available)
{
Java.perform(function(){
var String= Java.use('java.lang.String');
String.equals.overload("java.lang.Object").implementation=function(obj){
console.log(this.toString());
console.log(obj);
return this.equals(obj);
}
});
}

此处应有分割线

祝各位身体健康,心想事成!

概述

刷入自己编译的AOSP系统,一直有日志输出,TAG为QSEECOMD,日志内容如下

1
2
3
4
11-20 17:34:14.924 30350-30350/? D/QSEECOMD:: qseecom listener services process entry PPID = 1
11-20 17:34:14.924 30350-30350/? E/QSEECOMD:: Listener: index = 0, hierarchy = 0
11-20 17:34:14.925 30350-30350/? E/QSEECOMD:: Init dlopen(librpmb.so, RLTD_NOW) is failed....
11-20 17:34:14.925 30350-30350/? E/QSEECOMD:: ERROR: RPMB_INIT failed, shall not start listener services

解决方案

百度得知是librpmb.so以及libssd.so文件缺失,到官网下载原版镜像(可根据系统代号查找)
提取出这两个文件,导入/system/lib/后重启即可(注意权限设置)
也可打包成magisk模块刷入(下载地址:https://pan.baidu.com/s/1AcnT-D9x8EE0Z6Jzuxgscw 提取码: hqh5)
为了让下次编译系统时自动包含这两个文件,把它们复制到out/target/product/hammerhead/system/lib/

参考

How to solve QSEECOMD on AOSP

概述

Riru + EdXposed是目前Android P及以上的一种Xposed解决方案。
Riru通过替换libmemtrack.so(会被Zygote加载的一个共享库)从而实现Zygote注入。
本文记录了笔者编译Riru模块的过程。

阅读全文 »

概述

栈先进后出,一般用数组实现
队列先进先出,一般用链表实现
考虑到最终目的是实现队列,自定义栈,使用链表结构

阅读全文 »

安装

1
2
3
sudo apt-get install mysql-server
apt-get install mariadb-client
sudo apt-get install libmysqlclient-dev

默认配置

sudo service mysql start启动服务
然后执行ps -aux | grep mysql可以得到:

1
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=

启动服务时可能会报错:No directory, logging in with HOME=/
需要设置一下权限,再重新启动:

1
2
3
sudo service mysql stop
sudo usermod -d /var/lib/mysql/ mysql
sudo service mysql start

允许windows访问数据库

设置root账户密码并登录

1
2
mysqladmin -u root password root
mysql -u root -p

给予admin用户访问权限

1
2
3
4
mysql
grant all on *.* to admin@'%' identified by '123456' with grant option;
flush privileges;
exit;

执行sudo service mysql restart即可使用admin@localhost登陆服务器

参考

Linux上安装MySQL及其基础配置

签到题

修改页面源码以及js代码,去掉disabled描述符,使用Fiddler替换,然后强制刷新页面
即可点击提交按钮得到flag

白与夜

图片是qq中常见的隐藏图,个人做这题时是用的手机
直接使用自带相册打开即可看到flag

信息安全 2077

注意到页面源码中设置了If-Unmodified-Since为当前时间,而返回的Last-ModifiedFri, 01 Oct 2077 00:00:00 GMT,把If-Unmodified-Since改为该值即可获得flag

阅读全文 »