一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错

经过测试果然是一个注入点

当拿到admin密码后发现根本没用,没办法另寻他路

审查元素时发现提示index.txt,原来又是一个代码审计,这里把关键代码贴一下

 <?php

 if($_POST[user] && $_POST[pass]) {
$conn = mysql_connect("********, "*****", "********");
mysql_select_db("phpformysql") or die("Could not select database");
if ($conn->connect_error) {
die("Connection failed: " . mysql_error($conn));
}
$user = $_POST[user];
$pass = md5($_POST[pass]); $sql = "select pw from php where user='$user'";
$query = mysql_query($sql);
if (!$query) {
printf("Error: %s\n", mysql_error($conn));
exit();
}
$row = mysql_fetch_array($query, MYSQL_ASSOC);
//echo $row["pw"]; if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {
echo "<p>Logged in! Key:************** </p>";
}
else {
echo("<p>Log in failure!</p>"); } } ?>

首先分析一下代码:post形式传入user与pass两个参数,接着将user放入数据库查询,返回数据库中user对应的pass的md5加密值,再将传入的pass进行md5加密并与返回的pass比较,若相同则输出flag。

这里给一下strcasecmp()的说明

这里的思路肯定就是user端的注入,用union select语句控制sql语句查询后返回的值,然后给pass赋给相同值就行,这里要注意pass给的应该是未经md5加密的,而user中是要返回加密过的值,给payload:

user=admin' and 1=2 union select md5(1)%23&pass=1

上传绕过

这里主要的思路就是00截断,但00截断也有两种情况

首先给出我第一次测试失败的情况,直接在传入的文件名中截断

其实还有另外一种00截断,大家注意到抓到的包中有上传路径,我们可以直接在路径上进行截断,当在路径后加上1.php,filename给一个1.jpg,最后服务器最后就会认为你传入的文件名为1.php1.jpg,当在1.php后加上00截断,就可以把1.jpg给截断

最新文章

  1. LeetCode 344. Reverse String
  2. 前端学PHP之面向对象系列第一篇——类和对象
  3. 一些Python的惯用法和小技巧:Pythonic
  4. 用bower命令创建项目
  5. FOJProblem 2214 Knapsack problem(01背包+变性思维)
  6. hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
  7. 2016 - 1- 19 NSOperationQueue的简单使用
  8. jetty ZipException: invalid entry size
  9. Longest Run on a Snowboard
  10. POJ 1321 棋盘问题(DFS &amp; 状压DP)
  11. IL(Intermediate Language)
  12. 谈论multistage text input(中国输入法)下一个UITextView内容长度的限制
  13. shell写多行到文件中
  14. ajax 处理请求回来的数据
  15. Matrix Chain Multiplication(表达式求值用栈操作)
  16. React版本更新及升级须知(持续更新)
  17. sqlplus连接远程数据库
  18. 【编译原理】c++实现词法分析器
  19. Git Your branch is ahead of &#39;origin/master&#39; by X commits解决方法
  20. 配置ArcGIS Server使用LDAP身份认证

热门文章

  1. Linux进程间通信--信号量
  2. PID控制示例C编程
  3. prototype 原型链
  4. python3爬虫之入门和正则表达式
  5. Flask 学习 十三 应用编程接口
  6. Hibernate之Hibernate的体系结构
  7. git cherry-pick 整理
  8. 自己动手写CPU(基于FPGA与Verilog)
  9. Java 持久化之 --io流与序列化操作
  10. 3-51单片机WIFI学习(开发板8266底层源码介绍)