1. 程式人生 > >BugkuCTF之程式碼審計題部分(未完待續。。。。)

BugkuCTF之程式碼審計題部分(未完待續。。。。)

BugkuCTF之程式碼審計題部分

第一題:
在這裡插入圖片描述
分析程式碼:
首先確定extract()函式的用法,以及引數:
在這裡插入圖片描述
在這裡插入圖片描述
理解了extract()函式就好寫了。
直接

?shiyan=&falg=

在這裡插入圖片描述
第二題:
在這裡插入圖片描述
這個也是strcmp()函式的繞過,引數傳入一個a陣列

?a[]=12

在這裡插入圖片描述
第三題:
在這裡插入圖片描述
看程式碼,應該是讓我們傳入一個id=hackerDJ使之獲取flag
不過又需要我們urldecode(),因為瀏覽器在傳輸網址的時候已經urldecode()一次了,所以我們需要解兩次。
因為%在urlencode是%25,a是%61所以直接:

?id=h%2561ckerDJ

在這裡插入圖片描述
第四題:
在這裡插入圖片描述
因為md5()加密不能加密陣列,所以直接傳入兩個陣列

?username[]=123&password[]=456

在這裡插入圖片描述
第五題:
在這裡插入圖片描述
看題目也知道是陣列繞過所以就直接上payload吧

?password[]=asd--

在這裡插入圖片描述
第六題:
在這裡插入圖片描述
同理也是陣列繞過。

?password[]=123456

在這裡插入圖片描述
第七題:
在這裡插入圖片描述
跟md5()函式差不多吧,陣列繞過。

?name[]=123&password[]=456

在這裡插入圖片描述
第八題:
在這裡插入圖片描述
這個題有點難度,既要兩個md5的變數相等又要a不等於QNKCDZO
這個怎麼辦啊!!
應該是MD5碰撞吧,使之兩個加密之後相等,加密之前不等
QNKCDZO和240610708是兩個md5加密相等的值
所以

?a=240610708

在這裡插入圖片描述
第九題:
在這裡插入圖片描述
說實話一開始我也不知道怎麼辦,直接賦值錯!!
後來看題目說16進位制,就直接傳入3735929054的16進位制吧!
沒想到對了!!

?password=0xdeadc0de

在這裡插入圖片描述

第十題網站炸了,無法顯示

第十一題:
在這裡插入圖片描述
看題就知道是%00截斷,不過我用陣列也可以直接繞過!!

?password[]=123

在這裡插入圖片描述
第二種方法:
%00截斷:

?password[]=1%00

在這裡插入圖片描述
第十二題:
在這裡插入圖片描述
直接陣列繞過:

?ctf[]=123

在這裡插入圖片描述