port scan
1 |
|
有点眼熟,rpcbind,以前遇到过
1 |
|
有点眼熟,rpcbind,以前遇到过
192.168.2.131/sqli/example7.php?id=2
现在有一个问题,不知道背后的mysql语句到底过滤了什么,黑盒测试的话,就不知道如何针对性地绕过。
1 |
|
知识点:preg_match()函数的模式修饰符
1 |
|
所以,有了这个\m,如果加入换行符,那么就会导致匹配(换行符之前/之后/整个字符串)。
好了,现在问题解决了,主要是我建立的字典不够强大。
所以之前用intruder没有发现。
sqlmap -u "http://192.168.2.131/sqli/example7.php?id=2" --dbms mysql --tamper=space2newline.py --dbs
http://192.168.2.131/sqli/example8.php?order=name
经过检查,只有#符号无影响,其他都导致页面查询失败。
order by是排序的语句,单引号不能跟order by同时使用。
‘name’ ,mysql会认为是常量。
我们看一条mysql语句
1 |
|
apostrophemask.py 用utf8代替引号 base64encode.py 将payload编码
sqlmap -u "http://192.168.2.131/sqli/example8.php?order=name" --dbms mysql --tamper=base64encode.py --dbs
sqlmap -u "http://192.168.2.131/sqli/example8.php?order=name" --dbms mysql -technique B --level 5
绕不过了,然后看下答案。
如何确认order by注入?
下列语句,网页显示正常
1 |
|
加入`符号,网页显示错误。
%20ASC、%20DESC,表示升序排序、降序排序。
如何利用order by注入,参考资料;
中关村在线order by语句的盲注思路的分享(wooyun)
sqlmap -u "http://192.168.2.131/sqli/example8.php?order=id%60*" --dbms mysql --dbs --batch
–batch 当询问是否确定的时候,自动确定
%60是反引号,后接*,表示payload加在此处。
sqlmap -u "http://192.168.2.131/sqli/example9.php?order=name" --dbms mysql -technique B --level 5
虽然工具注入成功了,但还是分析一下。否则以后再遇到,只是碰运气,万一注入失败了,也不知道是哪里出错了。
mysql的if语句。
if(a,b,c) 如果a表达式为true,则运行表达式b;a = false,则运行表达式c。
两种注入语句,返回页面不同,说明有注入。
18年11月的时候,去找渗透测试的实习。以我半吊子的水平,当然还是不够的(==)
上图是去年的渗透实践。
以前的步骤经常看到一个感兴趣的点,然后就一直死磕ORZ
学网络安全也有3年了== 从啥也不会的小白到各方面略懂一点的script kiddie。 网络安全cyber security,分支那么多。 到有幸到black hat ctf 加大佬微信问入行经验,我要是还不明白发展方向,不如找块豆腐撞死得了。
通过这篇文章,学习shell脚本获取提权信息
nikto -host 192.168.1.135
WordPress/4.3.1
https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html
wordpress未授权密码重置
1 |
|
客户提供的http_host header
如果我们把这个变量改为“attackers-mxserver.com”,wordpress的“$from_email”变量为”wordpress@attackers-mxserver.com“
查找了一下不能发邮件的原因,==缺少了插件wp-mail-smtp。 http://www.jamesandchey.net/wordpress-the-e-mail-could-not-be-sent-possible-reason-your-host-may-have-disabled-the-mail-function/
好吧,就研究到这里,如果这个目标机有好好配置的话,是可以通过未授权密码重置,得到密码的。
nmap并没有写在环境变量中,所以直接调用nmap是not found。
在这个靶机中,nmap很鸡贼地藏在/usr/local/bin/路径下。
nmap version 3.81,低版本的nmap可以以执行root
执行一下脚本,即可获取有SUID权限的二进制文件。
1 |
|
script还很简陋,以后再优化优化。
参考资料:Understanding PHP Object Injection
php基础提要:
php允许保存一个对象方便以后重用,这就是序列化。 场景:变量值需要跨脚本传递。
下面演示php反序列化。 建立logfile.php(定义了一个类,可以进行文件删除),use.php(使用这个类,生成序列化字符串)。 1.php(之后演示删除该脚本) test.php(接受序列化字符串,删除1.php)
use.php指定了一个文件,进行删除。
O:7:"LogFile":1:{s:8:"filename";s:5:"1.php";}
复制生成的这个序列,之后要用到。
之后,建立一个test.php,其中定义一个新的类 User。
此时图一建立的1.php还存在。
划重点,test.php因为接受了用户给出的变量usr_serialized,而用户的输入不可控。导致php脚本解析并执行了删除1.php的操作。
而test.php本来设计的功能,是传递“O:4:”User”:2:s:3:”age”;i:20;s:4:”name”;s:4:”John”;}”
于是页面会显示“User John is 20 years old.”
在跨页面传递变量的时候,没有设计好,就导致了这个命令执行。