Game 31
Challenge statement:
* Info : This PDF file don't attack your PC. Just using for study.Analyze this PDF and Find a Flag.Auth Key = lowercase(MD5(Flag))Initial PDF triage
$ pdfid Hello_SuNiNaTaS.pdf.../JS 1/JavaScript 2/EmbeddedFile 0...pdfid shows JavaScript indicators, but the interesting part is a nested object tree.
Main solve path (works)
Search for JavaScript references and inspect container objects:
$ pdf-parser -s JavaScript Hello_SuNiNaTaS.pdfobj 30 0 << /JavaScript 31 0 R /EmbeddedFiles 38 0 R >>Follow embedded-file references:
$ pdf-parser -o 38 Hello_SuNiNaTaS.pdfobj 38 0Referencing: 40 0 R
$ pdf-parser -o 39 -f -d nested.pdf Hello_SuNiNaTaS.pdfobj 39 0Contains stream/Subtype /a/Filter /FlateDecodeNow analyze extracted nested.pdf:
$ pdfid nested.pdf.../Encrypt 1/JS 1/JavaScript 1/OpenAction 1...
$ qpdf --decrypt nested.pdf decrypted.pdf
$ pdf-parser -s js decrypted.pdfobj 2 0 << /JS 4 0 R /S /JavaScript >>
$ pdf-parser -o 4 -f -d dump decrypted.pdf$ cat dump"HERE IS FLAGS *********************"Flag:
SunINatAsGOodWeLL!@#$
Decoy path (time sink)
You can also extract object 37 as JavaScript payload:
$ pdf-parser -o 37 -d payload.js Hello_SuNiNaTaS.pdf$ node payload.jsDecoded content:Vm0wd2QyVkZOVWRXV0doVVYwZG9W...Repeated Base64 decoding eventually gives:
I am sorry, This is not Key~!!So object 37 is a distraction; the real flag is in the decrypted nested PDF JavaScript stream.