A friend of mine forgot her phone password. I told her you're the hacker! Go get 'em tiger.Solution:
It use Javascript to validate and I just write a python script to solve this below.
Flag: 98635f80048b8abbd71e9bb55958a6c8
A friend of mine forgot her phone password. I told her you're the hacker! Go get 'em tiger.Solution:
It is absolutely meaningless text, isn't it?Solution:
Do you like containers as we do?Solution:
Oh, that monkey is really annoying, can you feed it please?Solution:
Well, I found this shop and their offers are quite awesome, but something here smells... fishy. 1.ctf.link:1124Solution:
So I hope you're well insured, because the nineties have sent us their best thing ever: bright colors and Comic Sans MS. Please end it before everyone dies due to internal bleedings. 1.ctf.link:1123Solution:
Decrypt this strange word: ERTKSOOTCMCHYRAFYLIPLSolution:
Void. Empty. Null.Solution:
root@ubuntu:~# pngcheck -v m100.png File: m100.png (65141 bytes) chunk IHDR at offset 0x0000c, length 13 666 x 519 image, 32-bit RGB+alpha, non-interlaced CRC error in chunk IHDR (computed 3ff4fc62, expected 35468913)
root@ubuntu:~# pngcheck -v m100_fixsize.png File: m100_fixsize.png (65141 bytes) chunk IHDR at offset 0x0000c, length 13 666 x 550 image, 32-bit RGB+alpha, non-interlaced CRC error in chunk IHDR (computed f3042af1, expected 3ff4fc62) ERRORS DETECTED in m100_fixsize.png
This family of malware has gained notoriety after anti-virus and threat intelligence companies claimed that it was being used by several Chinese military groups.Solution: http://www.esecurityplanet.com/malware/report-plugx-is-rat-of-choice-for-nation-states.html
No More Free __!Solution: http://www.zdnet.com/article/no-more-free-bugs-there-never-were-any-free-bugs/
This mode on x86 is generally referred to as ring -2.Solution: https://en.wikipedia.org/wiki/System_Management_Mode
This vulnerability occurs when the incorrect timing/sequence of events may cause a bug.Solution: https://en.wikipedia.org/wiki/Race_condition
On Windows, loading a library and having it's code run in another process is called _ .Solution: https://en.wikipedia.org/wiki/DLL_injection
This Pentesting expert supplied HBO's Silicon Valley with technical advice in season 2. The flag is his twitter handle.Solution: https://www.linkedin.com/in/mubix
I visit this website when I'm sad, contains many magical things that help me to find the solution. Focused on your problem and find "the magic thing" that will help you to solve it.Solution:
if(isset($_POST["login"])){ if(isset($_POST["username"]) && isset($_POST["password"]) && !is_array($_POST["username"]) && !is_array($_POST["password"])){ $user = new User($_POST["username"], $_POST["password"]); $login = $user -> login(); if($login){ $logger = new Logger(gethostbyaddr($_SERVER["REMOTE_ADDR"]), $user); $logger -> log_access(); header("Location: magic_things.php"); } } }gethostbyaddr function *0*, I go to http://ipinfo.io/ and get my hostname. :)
public function __construct($host, $user){ $this -> host = $host; $this -> filename = $_SERVER["DOCUMENT_ROOT"]."log/" . $host . "_" . $user->getSurname(); $this -> user = $user; date_default_timezone_set("UTC"); }log_access() function and initLogFile() function have fwrite to write log file. It mean in /log folder have a log file name will concat my hostname and underscore and surname (in register)
<div id="content"> <?php include($page.".php"); ?> </div>include function can be execute php code!!
public function log_access(){ $active = $this -> user -> isActive(); if(!$active){ $this -> initLogFile(); } $fo = fopen($this -> filename, 'a'); if($fo){ $write = fwrite($fo, date('l jS \of F Y h:i:s A') . " - " . $this -> user -> getUsername() .": log in success\n"); fclose($fo); if($write) return true; else return false; } } public function initLogFile(){ $fo = fopen($this -> filename, 'w+'); if($fo){ $write = fwrite($fo, "name|".$this -> user -> getName().";surname|".$this->user->getSurname().";date_creation|UTC:".date('l jS \of F Y h:i:s A')."\n");//write header in logfile. fclose($fo); if($write){ $this -> user -> setActiveBit(1); return true; } else return false; } }6. In /classes/magic/magic.php, I just LFI to Remote code execution to call __call function.
public function __call($iveNeverSeenAnythingSoMagical, $magicArguments) { $mysqli = new mysqli("localhost", "magic", "nrqdUz4PMKNFZ7iphnzE", "magicchall"); $stmt = $mysqli->prepare("SELECT word FROM magic_word"); $stmt -> execute(); $stmt -> store_result(); $stmt -> bind_result($magic_word); $stmt -> fetch(); echo "I THINK THIS IS THE VERY MAGIC THING: " . $magic_word; session_destroy(); }
<div id="content"> name|I THINK THIS IS THE VERY MAGIC THING: flag{session_regenerate_id()_is_a_very_cool_function_use_it_whenever_you_happen_to_use_session_start()};surname|icheernoom.php;date_creation|UTC:Saturday 11th of July 2015 06:52:15 PM Saturday 11th of July 2015 06:52:15 PM - icheernoom: log in success </div>My Automate Script:
"Time is what we want most, but what we use worst." - William PennSolution:
1.) Take the RGB value of every pixel in one image.(Start at (0,0). Move down to (0,299). Go to (1,0). Move to (1,299). And so on. Read the files in numerical order.)
2.) Add all of the R values, G values, and B values in each image. (Have one R sum, one B sum, one G sum for every image.)
3.) Take these sums and convert them into strings. Take the MD5 hash of each string.
4.) Concatenate these MD5 hashes into one string.
5.) Take the MD5 hash of the new string.
6.) Do this for every image and concatenate the final MD5 hashes into one string. (Image 1 final hash + Image 2 final hash + ...)
7.) Take the MD5 of this string to get the flag.
PIL.zip
You're probably thinking too hard about this.Hint:
Remember that time when you guessed the admin password? Yeah.Solution:
Ever wonder why your homework gets corrupted so easily?Solution:
root@ubuntu:~# file excel_data.xlsx excel_data.xlsx: Zip archive data, at least v1.0 to extract root@ubuntu:~# strings excel_data.xlsx | grep "flag" xl/charts/flag.txt xl/charts/flag.txt root@ubuntu:~# mv excel_data.xlsx excel_data.zip root@ubuntu:~# unzip excel_data.zip Archive: excel_data.zip creating: docProps/ inflating: docProps/app.xml inflating: docProps/core.xml creating: xl/ inflating: xl/calcChain.xml creating: xl/charts/ inflating: xl/charts/chart1.xml inflating: xl/charts/chart2.xml inflating: xl/charts/flag.txt creating: xl/drawings/ inflating: xl/drawings/drawing1.xml inflating: xl/drawings/drawing2.xml creating: xl/drawings/_rels/ inflating: xl/drawings/_rels/drawing1.xml.rels inflating: xl/drawings/_rels/drawing2.xml.rels inflating: xl/sharedStrings.xml inflating: xl/styles.xml creating: xl/theme/ inflating: xl/theme/theme1.xml inflating: xl/workbook.xml creating: xl/worksheets/ inflating: xl/worksheets/sheet1.xml inflating: xl/worksheets/sheet2.xml inflating: xl/worksheets/sheet3.xml inflating: xl/worksheets/sheet4.xml creating: xl/worksheets/_rels/ inflating: xl/worksheets/_rels/sheet2.xml.rels inflating: xl/worksheets/_rels/sheet3.xml.rels creating: xl/_rels/ inflating: xl/_rels/workbook.xml.rels inflating: [Content_Types].xml creating: _rels/ inflating: _rels/.rels root@ubuntu:~# cat xl/charts/flag.txt {iT's_r1gh7_h3r3} root@ubuntu:~#
What is Microsoft's code name for their new internet browser?Solution: http://en.wikipedia.org/wiki/List_of_Microsoft_codenames
What is arguably the smallest Linux distribution with a GUI that is still being developed?Solution: http://www.junauza.com/2011/07/5-tiniest-linux-distributions-for-your.html
As of 2014, how many terabytes of data has Google Inc. indexed? Answer in form of an integer followed by the unit.Solution: http://www.websitemagazine.com/content/blogs/posts/archive/2014/07/22/do-you-know-how-big-the-internet-really-is-infographic.aspx
What is the official fastest clock speed of any computer?Solution: http://en.wikipedia.org/wiki/Clock_rate
Which OS is most popular for the Raspberry Pi?Solution: http://www.linuxuser.co.uk/reviews/top-4-raspberry-pi-os
root@ubuntu:~# curl -s http://ctf.infosecinstitute.com/levelone.php | grep flag <!-- infosec_flagis_welcome --> root@ubuntu:~#Flag: infosec_flagis_welcome
root@ubuntu:~# wget http://ctf.infosecinstitute.com/img/leveltwo.jpeg ...[snip]... 2015-03-12 11:26:51 (1.03 MB/s) - ‘leveltwo.jpeg’ saved [45/45] root@ubuntu:~# file leveltwo.jpeg leveltwo.jpeg: ASCII text root@ubuntu:~# cat leveltwo.jpeg aW5mb3NlY19mbGFnaXNfd2VhcmVqdXN0c3RhcnRpbmc= root@ubuntu:~# echo aW5mb3NlY19mbGFnaXNfd2VhcmVqdXN0c3RhcnRpbmc= | base64 --decode infosec_flagis_wearejuststarting root@ubuntu:~#Flag: infosec_flagis_wearejuststarting
root@ubuntu:~# echo aW5mb3NlY19mbGFnaXNfeW91Zm91bmRpdA== | base64 --decode infosec_flagis_youfoundit root@ubuntu:~#Flag: infosec_flagis_youfoundit
root@ubuntu:~# strings app.exe | grep infosec infosec_flagis_0x1a # Welcome to infosec institute net app v1.0# root@ubuntu:~#Flag: infosec_flagis_0x1a
root@ubuntu:~# echo "ssaptluafed_sigalf_cesofni" | rev infosec_flagis_defaultpass root@ubuntu:~#Flag: infosec_flagis_defaultpass
root@ubuntu:~# wget http://ctf.infosecinstitute.com/img/php-logo-virus.jpg ...[snip]... 2015-03-12 15:01:37 (86.3 MB/s) - ‘php-logo-virus.jpg’ saved [13791/13791] root@ubuntu:~# strings php-logo-virus.jpg | grep flag infosec_flagis_aHR0cDovL3d3dy5yb2xsZXJza2kuY28udWsvaW1hZ2VzYi9wb3dlcnNsaWRlX2xvZ29fbGFyZ2UuZ2lm root@ubuntu:~# echo aHR0cDovL3d3dy5yb2xsZXJza2kuY28udWsvaW1hZ2VzYi9wb3dlcnNsaWRlX2xvZ29fbGFyZ2UuZ2lm | base64 --decode http://www.rollerski.co.uk/imagesb/powerslide_logo_large.gif root@ubuntu:~#Flag: infosec_flagis_powerslide
root@ubuntu:~# cat level14.db \u0069\u006e\u0066\u006f\u0073\u0065\u0063\u005f\u0066\u006c\u0061\u0067\u0069\u0073\u005f\u0077\u0068\u0061\u0074\u0073\u006f\u0072\u0063\u0065\u0072\u0079\u0069\u0073\u0074\u0068\u0069\u0073 root@ubuntu:~#
Solution:I'm thinking of an integer between 1 and 10.python.sctf.io:11234My number is randomly generated each time you guess.
root@ubuntu:~# nc python.sctf.io 11234 What is your guess?10 Nope! root@ubuntu:~#I write a simple python script to solved 3 problem (1 .. 10, 1 .. 100, 1 .. 1000)
#!/usr/bin/python import socket, sys while True: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('python.sctf.io', 11234)) #just change port recv = s.recv(8192) if "guess" in recv: print recv data = 10 #specific number and wait... print data s.send(bytes(data)) recv = s.recv(8192) print recv if not "Nope" in recv: print recv sys.exit() s.closeFlag:
if (isset($_POST['configuration']) && $action != 'clear' ) { // Grab previous configuration, if it should not be cleared $configuration = unserialize($_POST['configuration']); } else { // Start with empty configuration $configuration = array(); }
class PMA_Config { /** * @var string default config source */ var $default_source = './libraries/config.default.php'; /** * @var array configuration settings */ var $settings = array(); /** * @var string config source */ var $source = '';
/** * re-init object after loading from session file * checks config file for changes and relaods if neccessary */ function __wakeup() { if (! $this->checkConfigSource() || $this->source_mtime !== filemtime($this->getSource()) || $this->default_source_mtime !== filemtime($this->default_source) || $this->error_config_file || $this->error_config_default_file) { $this->settings = array(); $this->load(); $this->checkSystem(); }
/** * loads configuration from $source, usally the config file * should be called on object creation and from __wakeup if config file * has changed * * @param string $source config file */ function load($source = null) { $this->loadDefaults(); if (null !== $source) { $this->setSource($source); } if (! $this->checkConfigSource()) { return false; } $cfg = array(); /** * Parses the configuration file */ $old_error_reporting = error_reporting(0); if (function_exists('file_get_contents')) { $eval_result = eval('?>' . trim(file_get_contents($this->getSource()))); } else { $eval_result = eval('?>' . trim(implode("\n", file($this->getSource())))); } error_reporting($old_error_reporting); if ($eval_result === false) { $this->error_config_file = true; } else { $this->error_config_file = false; $this->source_mtime = filemtime($this->getSource()); }
/** * returns source for current config * @return string config source */ function getSource() { return $this->source; }
public function showImageFromGet(){ $imageFilename = UniteFunctionsRev::getGetVar("img"); $maxWidth = UniteFunctionsRev::getGetVar("w",-1); $maxHeight = UniteFunctionsRev::getGetVar("h",-1); $type = UniteFunctionsRev::getGetVar("t",""); //set effect $effect = UniteFunctionsRev::getGetVar("e"); $effectArgument1 = UniteFunctionsRev::getGetVar("ea1"); if(!empty($effect)) $this->setEffect($effect,$effectArgument1); $this->showImage($imageFilename,$maxWidth,$maxHeight,$type); }
private function showImage($filename,$maxWidth=-1,$maxHeight=-1,$type=""){ if(empty($filename)) $this->throwError("image filename not found"); //validate input if($type == self::TYPE_EXACT || $type == self::TYPE_EXACT_TOP){ if($maxHeight == -1) $this->throwError("image with exact type must have height!"); if($maxWidth == -1) $this->throwError("image with exact type must have width!"); } $filepath = $this->pathImages.$filename; if(!is_file($filepath)) $this->outputEmptyImageCode(); //if gd library doesn't exists - output normal image without resizing. if(function_exists("gd_info") == false) $this->throwError("php must support GD Library"); //check conditions for output original image if(empty($this->effect)){ if((is_numeric($maxWidth) == false || is_numeric($maxHeight) == false)) outputImage($filepath); if($maxWidth == -1 && $maxHeight == -1) $this->outputImage($filepath); } if($maxWidth == -1) $maxWidth = 1000000; if($maxHeight == -1) $maxHeight = 100000; //init variables $this->filename = $filename; $this->maxWidth = $maxWidth; $this->maxHeight = $maxHeight; $this->type = $type; $filepathNew = $this->getThumbFilepath(); if(is_file($filepathNew)){ $this->outputImage($filepathNew); exit(); } try{ if($type == self::TYPE_EXACT || $type == self::TYPE_EXACT_TOP){ $isSaved = $this->cropImageSaveNew($filepath,$filepathNew); } else $isSaved = $this->resizeImageSaveNew($filepath,$filepathNew); if($isSaved == false){ $this->outputImage($filepath); exit(); } }catch(Exception $e){ $this->outputImage($filepath); } if(is_file($filepathNew)) $this->outputImage($filepathNew); else $this->outputImage($filepath); exit(); }
private function outputImage($filepath){ $info = UniteFunctionsRev::getPathInfo($filepath); $ext = $info["extension"]; $filetime = filemtime($filepath); $ext = strtolower($ext); if($ext == "jpg") $ext = "jpeg"; $numExpires = 31536000; //one year $strExpires = @date('D, d M Y H:i:s',time()+$numExpires); $strModified = @date('D, d M Y H:i:s',$filetime); $contents = file_get_contents($filepath); $filesize = strlen($contents); header("Last-Modified: $strModified GMT"); header("Expires: $strExpires GMT"); header("Cache-Control: public"); header("Content-Type: image/$ext"); header("Content-Length: $filesize"); echo $contents; exit(); }
private function outputImage($filepath){ $info = UniteFunctionsRev::getPathInfo($filepath); $ext = $info["extension"]; $filetime = filemtime($filepath); $ext = strtolower($ext); $good_extensions = array('jpg', 'png', 'gif', 'jpeg', 'tiff', 'bmp'); if(empty($ext) || !in_array($ext, $good_extensions)){ header("HTTP/1.1 403 Unauthorized" ); die('Unauthorized'); } if($ext == "jpg") $ext = "jpeg"; $numExpires = 31536000; //one year $strExpires = @date('D, d M Y H:i:s',time()+$numExpires); $strModified = @date('D, d M Y H:i:s',$filetime); $contents = file_get_contents($filepath); $filesize = strlen($contents); header("Last-Modified: $strModified GMT"); header("Expires: $strExpires GMT"); header("Cache-Control: public"); header("Content-Type: image/$ext"); header("Content-Length: $filesize"); echo $contents; exit(); }