سلام بر همهی علاقه مندان دنیای ctf ! با یه چالش وب اومدیم از picoCTF و قراره راه حلش رو شرح بدیم.
خب طبق توضیحات نویسندهی چالش احتمالا یه فایلی هست که راحت میشه دانلودش کرد و یه جایی از اون فلگه. خب بیشترین احتمال رو میدیم که این فایله یکی از فایل های javascript یا css یا html باشه. برای اینکه پیدا کنیم فلگ رو یک راهکار این هست که دونه دونه فایل ها رو باز کنیم و محتوای فایل رو بررسی کنیم و دنبال فلگ باشیم.
ولی خب چون کد زدن به شدت باحال تره پس میایم یه کد میزنیم که برامون پیدا کنه فایل رو و خودش دنبال فلگ بگرده :
importsysfromcoloramaimportFore,Back,Style,initimportrequestsfrombs4importBeautifulSoupimportosresults_counter=0defcrawl_over_every_thing(url,max_depth):globalresults_counterresponse=requests.get(url)soup=BeautifulSoup(response.content,"html.parser")ifmax_depth>=0:if'pico'inresponse.text:fil=open(str(results_counter)+'.txt','w')fil.write(response.text)os.system('grep pico '+str(results_counter)+'.txt')results_counter+=1ifmax_depth==0:returnlinks_list=soup.select('link[href]')forfound_urlinlinks_list:new_url=url+found_url['href']if'http'infound_url['href']:new_url=found_url['href']print(Fore.WHITE+'[+] '+Style.RESET_ALL,end='')print(Fore.GREEN+'Searching through '+Fore.BLUE+new_url+Style.RESET_ALL)crawl_over_every_thing(new_url,max_depth-1)if__name__=='__main__':init(autoreset=True)forurlinsys.argv:ifurl=='crawler.py':continueprint(Fore.WHITE+'[+] '+Style.RESET_ALL,end='')print(Fore.GREEN+'Searching through '+Fore.BLUE+url+Style.RESET_ALL)crawl_over_every_thing(url,10)
اینجا با توجه به خط 27 تو صفحههایی که مربوط به تگ link هستن میگرده که فلگ تو همون جاست. برای اینکه بخوایم تغییرش بدیم برای مثال بخواد تو همهی فایل های مربوط به تگ a بگرده باید به جای link از a استفاده کنیم.