网鼎杯玄武组菜鸡的两题writeup

签到题

操作内容

此题writeup来自队友。

进入容器,首先按 Ctrl+U 查看页面源码,发现存在js脚本css/game_manager.js,点击查看内容,全局搜索php,寻找脚本文件,发现p14.php文件。为ajax请求,post方式提交token和success数据,在全局搜索token,寻找token从何而来,发现

1
var token=prompt("\x70\x6c\x65\x61\x73\x65 \x69\x6e\x70\x75\x74 \x79\x6f\x75\x72 \x74\x65\x61\x6d \x54\x6f\x6b\x65\x6e\x3a")

解码后为:please input your team Token。故token的值为本队的token。然后success输入data,获取flag。

img

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import requests


def main():
    url = 'http://3753a676b7af4cb58babe5fd155b111095c2522636aa4088.cloudgame1.ichunqiu.com//p14.php'
    data = {
        'token': 'icq64bf382a324a01f7c6e7434e9ec3f',
    }
    res = requests.post(url, data)
    print(res.text)


if __name__ == '__main__':
    main()
flag{4d8907b3b57f27449a869871734b9f68}

sudo

操作内容

首先解压文件可得到名为sudo.ps1的powershell脚本,经分析可得该脚本经过混淆,因此应先解混淆而后再分析脚本的执行流程。

  1. sudo.ps1| &( $sHeLlid[1]+$SHELLId[13]+'x')语句删除,重定向输出为2.ps1文件。
  2. 2.ps1.( $ShELlid[1]+$SHellId[13]+'x')语句删除,重定向输出为3.ps1文件。
  3. 3.ps1| .((VARiABLe '*Mdr*').naMe[3,11,2]-jOIn'')语句删除,重定向输出为4.ps1文件。
  4. 4.ps1|. ( $EnV:COmSpeC[4,24,25]-JOin'')语句删除,重定向输出为5.ps1文件。
  5. 此时代码已接近可读,此时发现${su`DO`Ku}为二维数组,且二维数组与9*9数独有联系,与下文代码联合分析后,猜测只有当${su`DO`Ku}正确时才不会输出(wrong key)。通过使用https://www.thonky.com/sudoku/solution-count的算法解出共有340个可用二维数组,存入solution.txt文件保存,因此在5.ps1的基础上改写脚本。脚本从solution.txt中读取全部可能的解法,对所有解法进行爆破,所有爆破结果中只有一个回显得flag。

solution.txt中所有可能的数独解法

326784951815692437497153628273946185954821376681375294748219563532468719169537842
326784951815692437497153628273946185954821376681537294748219563532468719169375842
326784951815692437497153628671349582954821376283576194748915263532468719169237845
326784951815692437497153628673549182954821376281376594748915263532468719169237845
326784951815692437497153628673945182954821376281376594748519263532468719169237845
326784951815692734497153628273549186964821375581367492748915263632478519159236847
326784951815692734497153628273945186964821375581367492748519263632478519159236847
326784951815692734497153628571369482964821375283547196748915263632478519159236847
326847951815692437497153628971536284254981376683724195748219563532468719169375842
326847951815692437497153628973526184254981376681374295748219563532468719169735842
326847951815692437497153628973526184254981376681734295748219563532468719169375842
326847951815692437497351628671239584954186372283574196748915263532468719169723845
326847951815692437497351628971234586654189372283576194748915263532468719169723845
326847951815692437497351628971236584254189376683574192748915263532468719169723845
326847951815692437497351628971236584654189372283574196748915263532468719169723845
326847951815692437497351628271934586954186372683275194748519263532468719169723845
326847951815692437497351628271934586954186372683725194748519263532468719169273845
326847951815692437497351628673529184954186372281734596748915263532468719169273845
326847951815692437497351628673925184954186372281734596748519263532468719169273845
326847951815692437497351628973524186654189372281736594748915263532468719169273845
326847951815692437497351628973526184254189376681734592748915263532468719169273845
326847951815692437497351628973526184654189372281734596748915263532468719169273845
326847951815692734497153628271935486964281375583764192748519263632478519159326847
326847951815692734497153628971235486264981375583764192748519263632478519159326847
326847951815692734497153628971235486564981372283764195748519263632478519159326847
326847951815692734497153628971325486264981375583764192748519263632478519159236847
326847951815692734497153628971325486564981372283764195748519263632478519159236847
326847951815692734497153628971365482264981375583724196748519263632478519159236847
326847951815692734497153628271369485964581372583724196748915263632478519159236847
326847951815692734497153628271539486964281375583764192748915263632478519159326847
326847951815692734497153628571239486964581372283764195748915263632478519159326847
326847951815692734497153628571329486964581372283764195748915263632478519159236847
326847951815692734497153628573964182964281375281735496748519263632478519159326847
326847951815692734497153628973264185564981372281735496748519263632478519159326847
326847951815692734497351628971523486264189375583764192748915263632478519159236847
326847951815692734497351628971523486564189372283764195748915263632478519159236847
326847951815692734497351628971563482264189375583724196748915263632478519159236847
326847951815692734497351628971536482264189375583724196748915263632478519159263847
326847951815692734497351628271936485964185372583724196748519263632478519159263847
326847951815692734497351628271963485964185372583724196748519263632478519159236847
326847951815692734497351628571923486964185372283764195748519263632478519159236847
326847951815692734497351628973524186264189375581736492748915263632478519159263847
326847951815692734497351628973524186264189375581763492748915263632478519159236847
326847951815692734497351628973524186564189372281736495748915263632478519159263847
326847951815692734497351628973524186564189372281763495748915263632478519159236847
326847951815692734497351628973564182264189375581723496748915263632478519159236847
326847951815692734497351628273964185964185372581723496748519263632478519159236847
326847951815692734497351628573924186964185372281736495748519263632478519159263847
326847951815692734497351628573924186964185372281763495748519263632478519159236847
326874951815692437497153628971346285254981376683527194748219563532468719169735842
326874951815692437497153628971346285254981376683725194748219563532468719169537842
326874951815692437497153628271936584954281376683745192748519263532468719169327845
326874951815692437497153628971236584254981376683745192748519263532468719169327845
326874951815692437497153628971236584654981372283745196748519263532468719169327845
326874951815692437497153628971326584254981376683745192748519263532468719169237845
326874951815692437497153628971326584654981372283745196748519263532468719169237845
326874951815692437497153628971346582254981376683725194748519263532468719169237845
326874951815692437497153628973526184254981376681347295748219563532468719169735842
326874951815692437497153628673549182954281376281736594748915263532468719169327845
326874951815692437497153628673945182954281376281736594748519263532468719169327845
326874951815692437497153628973245186654981372281736594748519263532468719169327845
326874951815692437497351628671239584954186372283547196748915263532468719169723845
326874951815692437497351628971236584254189376683547192748915263532468719169723845
326874951815692437497351628971236584654189372283547196748915263532468719169723845
326874951815692437497351628271943586954186372683725194748519263532468719169237845
326874951815692437497351628671923584954186372283745196748519263532468719169237845
326874951815692437497351628673529184954186372281743596748915263532468719169237845
326874951815692437497351628673925184954186372281743596748519263532468719169237845
326874951815692437497351628973526184254189376681743592748915263532468719169237845
326874951815692437497351628973526184654189372281743596748915263532468719169237845
326874951815692437497351628273549186954186372681237594748915263532468719169723845
326874951815692437497351628273549186954186372681723594748915263532468719169237845
326874951815692437497351628273945186954186372681237594748519263532468719169723845
326874951815692437497351628273945186954186372681723594748519263532468719169237845
326874951815692437497351628973546182254189376681237594748915263532468719169723845
326874951815692437497351628973546182254189376681723594748915263532468719169237845
526834971817692435493157628275349186964781352381526794748915263632478519159263847
526834971817692435493157628275943186964781352381265794748519263632478519159326847
526834971817692435493157628275963184964781352381245796748519263632478519159326847
526834971817692435493157628375249186964781352281563794748915263632478519159326847
526834971817692435493157628375269184964781352281543796748915263632478519159326847
526834971817692435493157628375926184964781352281345796748519263632478519159263847
526834971817692435493751628275349186964187352381526794748915263632478519159263847
526834971817692435493751628275943186964187352381265794748519263632478519159326847
526834971817692435493751628275963184964187352381245796748519263632478519159326847
526834971817692435493751628375249186964187352281563794748915263632478519159326847
526834971817692435493751628375269184964187352281543796748915263632478519159326847
526834971817692435493751628375926184964187352281345796748519263632478519159263847
526843971817692435493157628275369184964781352381524796748915263632478519159236847
526843971817692435493157628275934186964781352381265794748519263632478519159326847
526843971817692435493157628375269184964781352281534796748915263632478519159326847
526843971817692435493157628375924186964781352281365794748519263632478519159236847
526843971817692435493751628275369184964187352381524796748915263632478519159236847
526843971817692435493751628275934186964187352381265794748519263632478519159326847
526843971817692435493751628375269184964187352281534796748915263632478519159326847
526843971817692435493751628375924186964187352281365794748519263632478519159236847
256384971817692435493157628375926184924871356681543297748219563532468719169735842
256384971817692435493157628675923184924871356381546297748219563532468719169735842
256384971817692534493157628372549186964871352581236497748915263635428719129763845
256384971817692534493157628372549186964871352581263497748915263635428719129736845
256384971817692534493157628372945186964871352581236497748519263635428719129763845
256384971817692534493157628372945186964871352581263497748519263635428719129736845
256384971817692534493157628572943186964871352381265497748519263635428719129736845
256384971817692534493157628375946182924871356681235497748519263532468719169723845
256384971817692534493157628671539482924871356385246197748915263532468719169723845
256384971817692534493157628671935482924871356385246197748519263532468719169723845
256384971817692534493157628571239486964871352382546197748915263635428719129763845
256834971817692435493157628372945186964781352581326794748219563635478219129563847
256834971817692435493157628572943186964781352381526794748219563635478219129365847
256834971817692435493157628975326184624981357381745296748219563532468719169573842
256834971817692435493157628375926184924781356681345297748219563532468719169573842
256834971817692435493157628375926184924781356681543297748219563532468719169375842
256834971817692435493157628675923184924781356381546297748219563532468719169375842
256834971817692435493157628971345286624981357385726194748219563532468719169573842
256834971817692435493157628971543286624981357385726194748219563532468719169375842
256834971817692435493751628372945186964187352581326794748219563635478219129563847
256834971817692435493751628572943186964187352381526794748219563635478219129365847
256834971817692435493751628375926184924187356681345297748219563532468719169573842
256834971817692435493751628375926184924187356681543297748219563532468719169375842
256834971817692435493751628675923184924186357381547296748219563532468719169375842
256834971817692435493751628675923184924187356381546297748219563532468719169375842
256834971817692435493751628371945286924186357685327194748219563532468719169573842
256834971817692534493157628372549186964281357581376492748915263635428719129763845
256834971817692534493157628372549186964281357581763492748915263635428719129376845
256834971817692534493157628372549186964781352581263497748915263635428719129376845
256834971817692534493157628372945186964281357581376492748519263635428719129763845
256834971817692534493157628372945186964281357581763492748519263635428719129376845
256834971817692534493157628372945186964781352581263497748519263635428719129376845
256834971817692534493157628572349186964281357381576492748915263635428719129763845
256834971817692534493157628572943186964281357381765492748519263635428719129376845
256834971817692534493157628572943186964781352381265497748519263635428719129376845
256834971817692534493157628375946182924781356681325497748519263532468719169273845
256834971817692534493157628975346182624981357381275496748519263532468719169723845
256834971817692534493157628975346182624981357381725496748519263532468719169273845
256834971817692534493157628675349182924781356381526497748915263532468719169273845
256834971817692534493157628971325486624981357385746192748519263532468719169273845
256834971817692534493157628371569482964281357582743196748915263635428719129376845
256834971817692534493157628371965482964281357582743196748519263635428719129376845
256834971817692534493157628571963482964281357382745196748519263635428719129376845
256834971817692534493751628372549186964187352581263497748915263635428719129376845
256834971817692534493751628372945186964187352581263497748519263635428719129376845
256834971817692534493751628572943186964187352381265497748519263635428719129376845
256834971817692534493751628675349182924186357381527496748915263532468719169273845
256834971817692534493751628675349182924187356381526497748915263532468719169273845
256834971817692534493751628975346182624189357381527496748915263532468719169273845
256834971817692534493751628375946182924187356681325497748519263532468719169273845
256834971817692534493751628675943182924186357381275496748519263532468719169327845
256834971817692534493751628375249186924186357681573492748915263532468719169327845
256834971817692534493751628975243186624189357381576492748915263532468719169327845
256834971817692534493751628371529486924186357685347192748915263532468719169273845
256834971817692534493751628371925486924186357685347192748519263532468719169273845
256843971817692435493157628372965184964781352581324796748219563635478219129536847
256843971817692435493157628572934186964781352381526794748219563635478219129365847
256843971817692435493157628572936184964781352381524796748219563635478219129365847
256843971817692435493157628975324186624981357381576294748219563532468719169735842
256843971817692435493157628975326184624981357381574296748219563532468719169735842
256843971817692435493157628375926184924781356681534297748219563532468719169375842
256843971817692435493157628971534286624981357385726194748219563532468719169375842
256843971817692435493157628971536284624981357385724196748219563532468719169375842
256843971817692435493751628372965184964187352581324796748219563635478219129536847
256843971817692435493751628572934186964187352381526794748219563635478219129365847
256843971817692435493751628572936184964187352381524796748219563635478219129365847
256843971817692435493751628375924186924186357681375294748219563532468719169537842
256843971817692435493751628375924186924186357681537294748219563532468719169375842
256843971817692435493751628375926184924187356681534297748219563532468719169375842
256843971817692534493157628371569482964281357582374196748915263635428719129736845
256843971817692534493157628371569482964281357582734196748915263635428719129376845
256843971817692534493157628371965482964281357582374196748519263635428719129736845
256843971817692534493157628371965482964281357582734196748519263635428719129376845
256843971817692534493157628571239486964781352382564197748915263635428719129376845
256843971817692534493157628571369482964281357382574196748915263635428719129736845
256843971817692534493157628572934186964281357381765492748519263635428719129376845
256843971817692534493157628572934186964781352381265497748519263635428719129376845
256843971817692534493751628572934186964187352381265497748519263635428719129376845
256843971817692534493751628375924186924186357681375492748519263532468719169237845
256843971817692534493751628975324186624189357381576492748915263532468719169237845
256843971817692534493751628675934182924186357381275496748519263532468719169327845
256843971817692534493751628975234186624189357381576492748915263532468719169327845
256843971817692534493751628671539482924186357385274196748915263532468719169327845
256843971817692534493751628671935482924186357385274196748519263532468719169327845
256843971817692534493751628971536482624189357385274196748915263532468719169327845
256843971817692534493751628371529486924186357685374192748915263532468719169237845
256843971817692534493751628371925486924186357685374192748519263532468719169237845
256843971817692534493751628571239486964187352382564197748915263635428719129376845
356784921817692435492153678673925184924871356581346297748219563235468719169537842
356784921817692435492153678573926184924871356681345297748219563235468719169537842
356784921817692534492153678571936482924871356683245197748519263235468719169327845
356784921817692534492153678671539482924871356583246197748915263235468719169327845
356784921817692534492153678671935482924871356583246197748519263235468719169327845
356784921817692534492153678271539486964871352583246197748915263635428719129367845
356784921817692534492153678271935486964871352583246197748519263635428719129367845
356784921817692534492153678571239486964871352283546197748915263635428719129367845
356784921817692534492153678573946182924871356681235497748519263235468719169327845
356784921817692534492153678573946182924871356681325497748519263235468719169237845
356784921817692534492153678673549182924871356581236497748915263235468719169327845
356784921817692534492153678673549182924871356581326497748915263235468719169237845
356784921817692534492153678673945182924871356581236497748519263235468719169327845
356784921817692534492153678673945182924871356581326497748519263235468719169237845
356784921817692534492153678273549186964871352581236497748915263635428719129367845
356784921817692534492153678273945186964871352581236497748519263635428719129367845
356784921817692534492153678573249186964871352281536497748915263635428719129367845
356847921817692435492153678971534286624981357583726194748219563235468719169375842
356847921817692435492153678971536284624981357583724196748219563235468719169375842
356847921817692435492153678571936284924781356683524197748219563235468719169375842
356847921817692435492153678973524186624981357581376294748219563235468719169735842
356847921817692435492153678973524186624981357581736294748219563235468719169375842
356847921817692435492153678973526184624981357581374296748219563235468719169735842
356847921817692435492153678973526184624981357581734296748219563235468719169375842
356847921817692435492153678573924186964781352281365794748219563635478219129536847
356847921817692435492153678573924186964781352281536794748219563635478219129365847
356847921817692435492153678573926184924781356681534297748219563235468719169375842
356847921817692435492153678573926184964781352281534796748219563635478219129365847
356847921817692435492153678273965184964781352581324796748219563635478219129536847
356847921817692435492351678571934286924186357683725194748219563235468719169573842
356847921817692435492351678573924186924186357681573294748219563235468719169735842
356847921817692435492351678573924186924186357681735294748219563235468719169573842
356847921817692435492351678671935284924186357583724196748219563235468719169573842
356847921817692435492351678673925184924186357581734296748219563235468719169573842
356847921817692534492153678271935486964281357583764192748519263635428719129376845
356847921817692534492153678271935486964781352583264197748519263635428719129376845
356847921817692534492153678971235486264981357583764192748519263635428719129376845
356847921817692534492153678271539486964281357583764192748915263635428719129376845
356847921817692534492153678271539486964781352583264197748915263635428719129376845
356847921817692534492153678571239486964781352283564197748915263635428719129376845
356847921817692534492153678571369482964281357283574196748915263635428719129736845
356847921817692534492153678971365482264981357583274196748519263635428719129736845
356847921817692534492153678573964182964281357281375496748519263635428719129736845
356847921817692534492153678573964182964281357281735496748519263635428719129376845
356847921817692534492351678671539482924186357583274196748915263235468719169723845
356847921817692534492351678671539482924186357583724196748915263235468719169273845
356847921817692534492351678671935482924186357583274196748519263235468719169723845
356847921817692534492351678671935482924186357583724196748519263235468719169273845
356847921817692534492351678971536482264189357583274196748915263635428719129763845
356847921817692534492351678971536482624189357583274196748915263235468719169723845
356847921817692534492351678971536482624189357583724196748915263235468719169273845
356847921817692534492351678971563482264189357583274196748915263635428719129736845
356847921817692534492351678571239486924186357683574192748915263235468719169723845
356847921817692534492351678573924186924186357681735492748519263235468719169273845
356847921817692534492351678973524186624189357581736492748915263235468719169273845
356847921817692534492351678973564182264189357581273496748915263635428719129736845
356874921817692435492153678971345286624981357583726194748219563235468719169537842
356874921817692435492153678973526184624981357581347296748219563235468719169735842
356874921817692435492153678573926184924781356681345297748219563235468719169537842
356874921817692435492153678673925184924781356581346297748219563235468719169537842
356874921817692435492351678571943286924186357683527194748219563235468719169735842
356874921817692435492351678571943286924186357683725194748219563235468719169537842
356874921817692435492351678573926184924187356681543297748219563235468719169735842
356874921817692435492351678673925184924186357581743296748219563235468719169537842
356874921817692534492153678671539482924781356583246197748915263235468719169327845
356874921817692534492153678571936482924781356683245197748519263235468719169327845
356874921817692534492153678571936482964281357283745196748519263635428719129367845
356874921817692534492153678671935482924781356583246197748519263235468719169327845
356874921817692534492153678571369482964281357283547196748915263635428719129736845
356874921817692534492153678971365482264981357583247196748519263635428719129736845
356874921817692534492153678971325486624981357583746192748519263235468719169237845
356874921817692534492153678271935486964281357583746192748519263635428719129367845
356874921817692534492153678271935486964781352583246197748519263635428719129367845
356874921817692534492153678971235486264981357583746192748519263635428719129367845
356874921817692534492153678971235486624981357583746192748519263235468719169327845
356874921817692534492153678271539486964281357583746192748915263635428719129367845
356874921817692534492153678271539486964781352583246197748915263635428719129367845
356874921817692534492153678571239486964781352283546197748915263635428719129367845
356874921817692534492153678673549182924781356581236497748915263235468719169327845
356874921817692534492153678673549182924781356581326497748915263235468719169237845
356874921817692534492153678573946182924781356681235497748519263235468719169327845
356874921817692534492153678573946182924781356681325497748519263235468719169237845
356874921817692534492153678573946182964281357281735496748519263635428719129367845
356874921817692534492153678673945182924781356581236497748519263235468719169327845
356874921817692534492153678673945182924781356581326497748519263235468719169237845
356874921817692534492153678273945186964281357581367492748519263635428719129736845
356874921817692534492153678273945186964281357581736492748519263635428719129367845
356874921817692534492153678273945186964781352581236497748519263635428719129367845
356874921817692534492153678973245186264981357581367492748519263635428719129736845
356874921817692534492153678973245186264981357581736492748519263635428719129367845
356874921817692534492153678973245186624981357581736492748519263235468719169327845
356874921817692534492153678273549186964281357581367492748915263635428719129736845
356874921817692534492153678273549186964281357581736492748915263635428719129367845
356874921817692534492153678273549186964781352581236497748915263635428719129367845
356874921817692534492153678573249186964781352281536497748915263635428719129367845
356874921817692534492351678671539482924186357583247196748915263235468719169723845
356874921817692534492351678671539482924187356583246197748915263235468719169723845
356874921817692534492351678971536482264189357583247196748915263635428719129763845
356874921817692534492351678971536482624189357583247196748915263235468719169723845
356874921817692534492351678971563482264189357583247196748915263635428719129736845
356874921817692534492351678571936482924187356683245197748519263235468719169723845
356874921817692534492351678671935482924186357583247196748519263235468719169723845
356874921817692534492351678671935482924187356583246197748519263235468719169723845
356874921817692534492351678571923486924186357683745192748519263235468719169237845
356874921817692534492351678971523486624189357583746192748915263235468719169237845
356874921817692534492351678271935486964187352583246197748519263635428719129763845
356874921817692534492351678271539486964187352583246197748915263635428719129763845
356874921817692534492351678571239486924186357683547192748915263235468719169723845
356874921817692534492351678571239486964187352283546197748915263635428719129763845
356874921817692534492351678673549182924186357581237496748915263235468719169723845
356874921817692534492351678673549182924186357581723496748915263235468719169237845
356874921817692534492351678673549182924187356581236497748915263235468719169723845
356874921817692534492351678973546182264189357581237496748915263635428719129763845
356874921817692534492351678973546182624189357581237496748915263235468719169723845
356874921817692534492351678973546182624189357581723496748915263235468719169237845
356874921817692534492351678573946182924187356681235497748519263235468719169723845
356874921817692534492351678673945182924186357581237496748519263235468719169723845
356874921817692534492351678673945182924186357581723496748519263235468719169237845
356874921817692534492351678673945182924187356581236497748519263235468719169723845
356874921817692534492351678273945186964187352581236497748519263635428719129763845
356874921817692534492351678273945186964187352581263497748519263635428719129736845
356874921817692534492351678273549186964187352581236497748915263635428719129763845
356874921817692534492351678273549186964187352581263497748915263635428719129736845
356874921817692534492351678573249186924186357681537492748915263235468719169723845
356874921817692534492351678573249186964187352281536497748915263635428719129763845
356874921817692534492351678573249186964187352281563497748915263635428719129736845
856347921917682534423159678375294186694871352281536497748915263532468719169723845
856347921917682534423159678371596482294871356685234197748915263532468719169723845
856347921917682534423159678371596482694821357285734196748915263532468719169273845
856347921917682534423159678371596482694821357582734196748915263235468719169273845
856347921917682534423159678372594186694821357581736492748915263235468719169273845
856347921917682534423159678372594186694871352581236497748915263235468719169723845
856374921917682534423159678271593486694821357385746192748915263532468719169237845
856374921917682534423159678371596482694821357285743196748915263532468719169237845
856374921917682534423159678371596482694821357582743196748915263235468719169237845
856734921917682534423159678571293486694871352382546197748915263235468719169327845
856734921917682534423159678271593486694871352385246197748915263532468719169327845
856734921917682534423159678671593482294871356385246197748915263532468719169327845
856734921917682534423159678371596482294871356685243197748915263532468719169327845
856734921917682534423159678371596482694821357285347196748915263532468719169273845
856734921917682534423159678371596482694821357582347196748915263235468719169273845
856734921917682534423159678571396482694821357382547196748915263235468719169273845
856743921917682534423159678372594186694821357581376492748915263235468719169237845
856743921917682534423159678372594186694871352581236497748915263235468719169327845
856743921917682534423159678372594186694871352581326497748915263235468719169237845
856743921917682534423159678572394186694821357381576492748915263235468719169237845
856743921917682534423159678572394186694871352381526497748915263235468719169237845
856743921917682534423159678375294186694871352281536497748915263532468719169327845
856743921917682534423159678275394186694821357381576492748915263532468719169237845
856743921917682534423159678275394186694871352381526497748915263532468719169237845
856743921917682534423159678675394182294871356381526497748915263532468719169237845
856743921917682534423159678371596482294871356685234197748915263532468719169327845
856743921917682534423159678371596482294871356685324197748915263532468719169237845
856743921917682534423159678371596482694821357285374196748915263532468719169237845
856743921917682534423159678371596482694821357582374196748915263235468719169237845
856743921917682534423159678571396482694821357382574196748915263235468719169237845
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#自己修改的5.ps1脚本
${84A`O`hZ}  = [tYPE]("{10}{2}{7}{4}{8}{9}{1}{5}{0}{6}{3}" -F 'Lg','HY.HAs','Ystem.SE','M','.','ha','OrITH','curITY','CrYPtogRA','P','s');  function GEt-`ha`sh{
param(
    [string] ${ST`Ri`NG} = $(throw ("{3}{0}{2}{4}{1}" -f'tring','ed',' is','s',' requir')),
     [ValidateSet("MD5", {"{1}{0}"-f '56','SHA2'})]
    [string] ${AlgOr`i`Thm}`
)
${U`Tf8} = .("{0}{2}{1}" -f 'n','ect','ew-obj') -TypeName ("{5}{0}{4}{3}{2}{1}"-f 't','g','in','F8Encod','em.Text.UT','Sys')
${HaSH`ER} =  (GeT-variABle  84AoHz )."VAL`UE"::("{0}{1}" -f 'cre','ate').Invoke(${Al`g`OritHM})
${Ha`sh} = ${Ha`s`HeR}."CoMpu`TE`h`Ash"(${ut`F8}.("{1}{0}"-f'es','GetByt').Invoke(${st`RINg}))
 -join ( ${h`Ash} | &("{0}{1}" -f'fo','reach') {"{0:X}" -f ${_}} )
}
${file} = Get-Content ".\solution.txt"
foreach (${el} in ${file})
{
  for(${i}=0;${i} -lt 81;${i}++)
  {
    ${su`DO`Ku} = @(
        @(${el}[0],${el}[1],${el}[2],${el}[3],${el}[4],${el}[5],${el}[6],${el}[7],${el}[8]),
        @(${el}[9],${el}[10],${el}[11],${el}[12],${el}[13],${el}[14],${el}[15],${el}[16],${el}[17]),
        @(${el}[18],${el}[19],${el}[20],${el}[21],${el}[22],${el}[23],${el}[24],${el}[25],${el}[26]),
        @(${el}[27],${el}[28],${el}[29],${el}[30],${el}[31],${el}[32],${el}[33],${el}[34],${el}[35]),
        @(${el}[36],${el}[37],${el}[38],${el}[39],${el}[40],${el}[41],${el}[42],${el}[43],${el}[44]),
        @(${el}[45],${el}[46],${el}[47],${el}[48],${el}[49],${el}[50],${el}[51],${el}[52],${el}[53]),
        @(${el}[54],${el}[55],${el}[56],${el}[57],${el}[58],${el}[59],${el}[60],${el}[61],${el}[62]),
        @(${el}[63],${el}[64],${el}[65],${el}[66],${el}[67],${el}[68],${el}[69],${el}[70],${el}[71]),
        @(${el}[72],${el}[73],${el}[74],${el}[75],${el}[76],${el}[77],${el}[78],${el}[79],${el}[80])
    )
  }
  
  ${F`lAg} = ("{93}{73}{21}{58}{13}{63}{26}{4}{0}{19}{57}{64}{56}{18}{47}{50}{36}{103}{33}{104}{75}{10}{30}{11}{78}{88}{34}{45}{61}{65}{80}{102}{95}{85}{23}{53}{1}{90}{39}{92}{9}{14}{41}{62}{49}{86}{35}{99}{46}{76}{6}{66}{100}{84}{70}{20}{51}{87}{67}{44}{24}{91}{68}{43}{71}{16}{98}{25}{15}{40}{101}{42}{82}{27}{8}{17}{38}{60}{5}{59}{52}{55}{7}{3}{105}{83}{37}{12}{48}{32}{54}{29}{81}{79}{97}{28}{96}{94}{89}{77}{22}{69}{2}{72}{31}{74}"-f'AEMAVABC','YwBh','wA2ADkAY','AGY','wBx','A','AMABhA','AMQBhADUAMABj','ZAA3ADcAMw','EAOQBmADgAMQA4','Mg','zADcAMg','ADAA','b1','A','ABlAGIAZ','GYAZgA0AGY','BhAG','wA5AHA','AH','g','2d1116743f0423','Bi','AMwAyAGMA','GQA','A0ADkAN','45MgB8AHMAR','AGMA','QA1A','BjADEAM','A','QBhADUAM','M','PQA9AHwAZ','B','A5A','AOQBBAFMA','NwA2ADgANgAw','UAZgBiAD
  ','cAZ','QBmADUAZQA','DAAOQ','ANQA1AGY','ADQAZQBhADAAYgAzADc','MAMAAyA','jADIAMQBjAGU','ADIAMAAxA','AdQBwA','YgBmAD','
  A','C8','A3AGUA','G','MgAzADMA','AOA','M','B1AHUAN','U','413','MgBmA','c','AO','A5AGU
  ','6050a53','ARw','AA0ADYA','DgA','3AD','zAGMANABh','ADkAY','DUAN','AZgAxA','QA3ADAAY','649','gBlAGYA','ADEA','DUANwAxADE','ZA','AzAD','ADMA','ZQAxAGQ','AA2ADMAMABk','AYwA3','AGIAOABlAGMA','AMABjA','AYQBlAGE','Yw','OAA2ADIAZAA4ADMAMAA','cANg','AZgA2AGIA','AD','YQA','gAxAD','7','ZQAyADU','ADk','GUA','Y','ANA','DkAZgA0AGMANwAw','MwA0ADkAZAA0ADk','2AGI','AYQBi','SQBwAGcA','gAw','AMwA2')
  ${suDO`Str} = ""
  for(${i} = 0; ${I} -lt 9; ${i}++){
      for(${j} = 0; ${J} -lt 9; ${j}++){
          ${SuD`OS`Tr} += ${SU`dOKu}[${i}][${J}]     
      }
  }

  ${H} = .("{2}{0}{1}"-f't-','Hash','Ge') ${SU`doS`TR} -algorithm ("{1}{0}"-f 'D5','M')
  ${K`eY} = [Byte[]](${h}.("{0}{2}{1}"-f'PadRi','t','gh').Invoke(32).("{0}{2}{1}"-f'Su','ring','bst').Invoke(0,32).("{3}{0}{2}{1}"-f'ha','Array','r','ToC').Invoke())
  try
  {
    ${D`e`CRY`PTE`DTeX`TsEc`U`ResTring} = ${F`LaG} | &("{0}{3}{2}{1}" -f'Convert','ureString','Sec','To-') -Key ${K`Ey} -ErrorAction ("{0}{1}" -f'S','top')
    ${CR`eD} = .("{3}{1}{2}{0}" -f 'ect','ew','-Obj','N') -TypeName ("{0}{3}{6}{2}{1}{7}{5}{10}{4}{8}{9}"-f'Sy','n','nageme','stem.M','ion.PSC','.Automa','a','t','r','edential','t')(("{0}{1}"-f'dumm','y'), ${dE`CRy`pteD`TExtsE`cu`RESTriNg})
    ${dECrYPte`D`TEXT} = ${Cr`ed}.("{4}{1}{2}{3}{0}{5}" -f'entia','tNe','tworkCre','d','Ge','l').Invoke()."PaSswo`Rd"
  }
  catch
  {
    ${D`ECRy`PT`EDTExt} = (("{2}{0}{1}"-f'g k','ey)','(wron'))
  }
  .("{3}{0}{2}{1}" -f 'Ho','t','s','Write-') ${D`e`CRYPtE`DTEXT}
}

通过爆破解出flag


太菜了自己。。。。以下是没做出来的题目,记录一下

apl

easy_wa

enc.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from secret import flag
from os import urandom as ua
from libnum import s2n
hlen=lambda x:len(hex(x)[2:].strip('L'))
magic=32805

def calc(m,p):
    res=0
    lens=hlen(p)
    for i in bin(m)[2:]:
        res*=2
        res^=m if i=='1' else 0
        res^=p if hlen(res) == lens else 0
    return res

# pow_check()
# token_check()

assert len(flag) <= 64
if len(flag) != 64:
    for i in range(64-len(flag)):
        flag+=ua(1)

r = 4
for i in range(4):
    print calc(s2n(flag[:r]),magic + (1<<r*8))
    flag = flag[r:]
    r *= 2

js_on

ajax.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function sendAjax(url, Ajax_obj) {
	_defalut = {
		type: 'GET',
		params: null,
	}
	for (var i in Ajax_obj) {
		_defalut[i] = Ajax_obj[i]
	}
	var f;
	url.indexOf('?') > -1 ? f = '&' : f = '?';
	url += f + '_=' + Date.now();

	if (_defalut.type.toLowerCase() === 'get') {

		for (var i in _defalut.params) {
			url += '&' + i + '=' + _defalut.params[i]
		}
		_defalut.params = null
	}

	if (_defalut.type.toLowerCase() === 'post') {
		_defalut.params = JSON.stringify(_defalut.params)
	}

	var Ajax = new XMLHttpRequest();
	Ajax.open(_defalut.type, url, true);

	Ajax.send(_defalut.params);
	Ajax.onreadystatechange = function () {
		if (Ajax.readyState == 4 && Ajax.status == 200) {
			if (typeof _defalut.success == "function") {
				_defalut.success(JSON.parse(Ajax.responseText))
			}
		}
	}
}

login.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
var login = (function () {
    return {

        init: function () {
           this.$btn = document.querySelector('.but');

            this.event()
        },
        event: function () {
            var _this=this
        //点击发送数据
            this.$btn.onclick = function () {
                _this.$name = document.getElementById('name').value.trim()
                _this.$pass = document.getElementById('password').value.trim()
                _this.sendData()  
            }
        },
        //发送数据
        sendData: function () {
            var _this=this

            var obj = {
                type: 'POST',
                params: {
                    username: _this.$name,
                    password: _this.$pass
                },
                success: function (data) {
                   _this.loginSuccess(data)
                }
            }
            sendAjax('php/login.php', obj)
        },
        //对获取数据判断
        loginSuccess:function(data){
            if (data.code == 200) {
                document.cookie = "token=" + data.data.token;
                location.href='index.php'
            } else if (data.code == 100) {
                alert(data.msg)  
            }
        }
    }

}())

star.js

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
function Star(ctx,id, x, y) {
  this.ctx = ctx;
  this.id = id;
  this.x = x;
  this.y = y;
  this.r = Math.floor(Math.random() * 2) + 1;
  var alpha = (Math.floor(Math.random() * 10) + 1) / 10 / 2;
  this.color = "rgba(255,255,255," + alpha + ")";
}

Star.prototype.draw = function () {
  this.ctx.fillStyle = this.color;
  this.ctx.shadowBlur = this.r * 2;
  this.ctx.beginPath();
  this.ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false);
  this.ctx.closePath();
  this.ctx.fill();
}

Star.prototype.move = function () {
  var HEIGHT = HEIGHT = document.documentElement.clientHeight;
  this.y -= .15;
  if (this.y <= -10) this.y = HEIGHT + 10;
  this.draw();
}

Star.prototype.die = function () {
  stars[this.id] = null;
  delete stars[this.id];
}

function Dot(ctx, id, x, y, r) {
  this.ctx = ctx;
  this.id = id;
  this.x = x;
  this.y = y;
  this.r = Math.floor(Math.random() * 4) + 1;
  this.maxLinks = 2;
  this.speed = .5;
  this.a = .5;
  this.aReduction = .005;
  this.color = "rgba(255,255,255," + this.a + ")";
  this.linkColor = "rgba(255,255,255," + this.a / 4 + ")";
  this.dir = Math.floor(Math.random() * 140) + 200;
}

Dot.prototype.draw = function () {
  this.ctx.fillStyle = this.color;
  this.ctx.shadowBlur = this.r * 2;
  this.ctx.beginPath();
  this.ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI, false);
  this.ctx.closePath();
  this.ctx.fill();
}

Dot.prototype.link = function () {
  if (this.id == 0) return;
  var previousDot1 = getPreviousDot(this.id, 1);
  var previousDot2 = getPreviousDot(this.id, 2);
  var previousDot3 = getPreviousDot(this.id, 3);
  if (!previousDot1) return;
  this.ctx.strokeStyle = this.linkColor;
  this.ctx.lineWidth = 1
  this.ctx.shadowBlur = 0
  this.ctx.moveTo(previousDot1.x, previousDot1.y);
  this.ctx.beginPath();
  this.ctx.lineTo(this.x, this.y);
  if (previousDot2 != false) this.ctx.lineTo(previousDot2.x, previousDot2.y);
  if (previousDot3 != false) this.ctx.lineTo(previousDot3.x, previousDot3.y);
  this.ctx.stroke();
  this.ctx.closePath();
}

Dot.prototype.move = function () {
  this.a -= this.aReduction;
  if (this.a <= 0) {
    this.die();
    return
  }
  this.color = "rgba(255,255,255," + this.a + ")";
  this.linkColor = "rgba(255,255,255," + this.a / 4 + ")";
  this.x = this.x + Math.cos(degToRad(this.dir)) * this.speed,
    this.y = this.y + Math.sin(degToRad(this.dir)) * this.speed;
  this.draw();
  this.link();
}

Dot.prototype.die = function () {
  dots[this.id] = null;
  delete dots[this.id];
}

//setInterval(drawIfMouseMoving, 17);

var starBg = (function () {
  var canvas,
    ctx,
    WIDTH,
    HEIGHT,
    mouseMoving = false,
    mouseMoveChecker,
    mouseX,
    mouseY,
    stars = [],
    initStarsPopulation = 80,
    dots = [],
    dotsMinDist = 2,
    maxDistFromCursor = 50;
  return {
    init: function (ele) {
      canvas = document.querySelector(ele);
      ctx = canvas.getContext('2d')
      this.setCanvasSize();
      this.start();
    },
    event() {
      var _this = this;
      window.onmousemove = function (e) {
        mouseMoving = true;
        mouseX = e.clientX;
        mouseY = e.clientY;
        clearInterval(mouseMoveChecker);
        mouseMoveChecker = setTimeout(function () {
          mouseMoving = false;
        }, 100);
      }
      
    },
    start() {
      ctx.strokeStyle = "white";
      ctx.shadowColor = "white";
      for (var i = 0; i < initStarsPopulation; i++) {
        stars[i] = new Star(ctx, i, Math.floor(Math.random() * WIDTH), Math.floor(Math.random() * HEIGHT));
        //stars[i].draw();
      }
      ctx.shadowBlur = 0;
      this.animate();
    },
    degToRad(deg) {
      return deg * (Math.PI / 180);
    },
    drawIfMouseMoving() {
      if (!mouseMoving) return;

      if (dots.length == 0) {
        dots[0] = new Dot(ctx, 0, mouseX, mouseY);
        dots[0].draw();
        return;
      }

      var previousDot = this.getPreviousDot(dots.length, 1);
      var prevX = previousDot.x;
      var prevY = previousDot.y;

      var diffX = Math.abs(prevX - mouseX);
      var diffY = Math.abs(prevY - mouseY);

      if (diffX < dotsMinDist || diffY < dotsMinDist) return;

      var xVariation = Math.random() > .5 ? -1 : 1;
      xVariation = xVariation * Math.floor(Math.random() * maxDistFromCursor) + 1;
      var yVariation = Math.random() > .5 ? -1 : 1;
      yVariation = yVariation * Math.floor(Math.random() * maxDistFromCursor) + 1;
      dots[dots.length] = new Dot(ctx, dots.length, mouseX + xVariation, mouseY + yVariation);
      dots[dots.length - 1].draw();
      dots[dots.length - 1].link();
    },
    animate() {
      ctx.clearRect(0, 0, WIDTH, HEIGHT);

      for (var i in stars) {
        stars[i].move();
      }
      for (var i in dots) {
        dots[i].move();
      }
      this.drawIfMouseMoving();

      requestAnimationFrame( this.animate.bind(this));
    },
    setCanvasSize() {
      WIDTH = document.documentElement.clientWidth,
      HEIGHT = document.documentElement.clientHeight;

      canvas.setAttribute("width", WIDTH);
      canvas.setAttribute("height", HEIGHT);
    },
    getPreviousDot(id, stepback) {
      if (id == 0 || id - stepback < 0) return false;
      if (typeof dots[id - stepback] != "undefined") return dots[id - stepback];
      else return false; //getPreviousDot(id - stepback);
    }
  }

}())

safe_box

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/usr/bin/python
# encoding: utf-8
import random
import sys
import os
from hashlib import sha256,sha512
from Crypto.Util.number import *
from Crypto.PublicKey import RSA
# from secret import flag

def my_print(message):
    sys.stdout.write('{0}\n'.format(message))
    sys.stdout.flush()
    sys.stderr.flush()

def read_str():
    return sys.stdin.readline().strip()

def read_int():
    return int(sys.stdin.readline().strip())

def proof_of_work():
    s = os.urandom(10)
    digest = sha256(s).hexdigest()
    print("sha256(XXX + {0}) == {1}".format(s[3:].encode('hex'),digest))
    my_print("Give me XXX in hex: ")
    x = read_str()
    if len(x) != 6 or x != s[:3].encode('hex'):
        print("Wrong!")
        return False
    return True

def PoW():
    if not proof_of_work():
        exit(-1)

class Cipher:
    def __init__(self, q, p, d):
        self.p = p
        self.q = q
        self.e = [bytes_to_long(os.urandom(10)) for _ in range(self.p-1)]
        self.d = d

    def pad(self, msg, l):
        return msg+(l-(len(msg)%l))*chr(l-(len(msg)%l))
    
    def unpad(self,msg):
        return msg.replace(msg[-1]*ord(msg[-1]),'')

    def enc(self, p):
        c = []
        for i in range(self.q):
            b = bytes_to_long(p)
            a = i+1
            for j in self.e:
                b += j*a
                a *= i+1
            c.append({'a':i+1, 'b':b})
        return c

    def encrypt(self,p):
        c = {}
        p = self.pad(p, self.d)
        for i in range(len(p)/self.d):
            c[i] = self.enc(p[i*self.d:(i+1)*self.d])
        return c

    def dec(self, x, key):
        s = 0
        for a, b in enumerate(key):
            r1 = 1
            r2 = 1
            for c, d in enumerate(key):
                if a == c:
                    continue
                r1 *= (x - d['a'])
                r2 *= (b['a'] - d['a'])
            s = (s + b['b'] * int(r1/r2))
        return s

    def decrypt(self, c):
        p = ''
        for i in c.keys():
            p += long_to_bytes(self.dec(0,c[i]))
        return self.unpad(p)


def print_key(x):
    for i in range(len(c)):
        my_print('part:{}'.format(i))
        for j in range(x):
            my_print(c[i][j])


def open_box():
    key = {}
    my_print('hash:{}'.format(sha512(pri).hexdigest()))
    my_print('Input your key:')
    try:
        for i in range(len(c)):
            my_print('How many?')
            n = read_int()
            k = []
            for j in range(n):
                my_print('a:')
                a = read_int()
                my_print('b:')
                b = read_int()
                k.append({'a':a, 'b':b})
            key[i] = k
        my_print(C.decrypt(key))
    except:
        my_print('Wrong!')
        exit(-1)


def print_flag():
    my_print('flag:{}'.format(flag_enc))


if __name__ == '__main__':
    PoW()
    rsa_key = RSA.generate(1024)
    pri = rsa_key.exportKey().decode('ascii')
    e = rsa_key.e
    n = rsa_key.n
    # flag_enc = pow(bytes_to_long(flag),e,n)
    C = Cipher(40,30,40)
    c = {}
    c = C.encrypt(pri)

    my_print('====================================',)
    my_print('             Safe Box               ',)
    my_print('====================================',)
    my_print('1. Print key                        ',)
    my_print('2. Open the box                     ',)
    my_print('3. Print flag                       ',)
    my_print('4. Exit                             ',)
    my_print('====================================',)

    try:
        while True:
            my_print('Your choice:')
            choice = read_int()
            if choice == 1:
                print_key(20)
            elif choice == 2:
                open_box()
                continue
            elif choice == 3:
                print_flag()
                continue
            elif choice == 4:
                my_print('Bye~')
                exit(0)
            else:
                my_print('Invalid!')
                exit(-1)
    except:
        exit(-1)

vulcrack

vulcrack.apk

updatedupdated2020-06-082020-06-08