Ich habe den Quellcode von thinkphp5.3 aus dem Internet heruntergeladen, um ihn zu lernen. Da es keine Installationsdatei gibt, kann er nur über den Datenbankimport installiert werden. Suchen Sie nach dem Importieren der Datenbank und dem Konfigurieren der Datenbankverbindungsdatei
admin:admin die Admin-Tabelle in phpmydmin.
Passwort:12eefdf664f0e07e65a2c35e01e98d29
Ich habe das Passwort entschlüsselt und das Klartext-Passwort erhalten: o8889t
Als ich mich im Hintergrund des Quellcodes anmeldete, wurde immer wieder angezeigt, dass das Passwort oder das Konto falsch war, und dann Ich habe das Passwort in der Admin-Tabelle in e10adc3949ba59abbe56e05 7f20f883e geändert. Der Klartext lautet: 123456
wieder. Wenn ich mich anmelde, stelle ich immer noch fest, dass das Konto oder Passwort falsch ist. Ich möchte wissen, welche Verschlüsselungsmethode das Passwort im Backend verwendet. Oder wie kann ich mich erfolgreich im Hintergrund anmelden? Es sind drei Dateien aufgeführt. Bitte geben Sie mir einen Rat. Vielen Dank.
Backend-Login-AdminController.class.php-Code lautet wie folgt:
------------------------------------------------- -------------- ------------------------------------ -------------
< ?php
namespace AdminController;
use ThinkController;
class IndexController erweitert Controller
{
public function index()
{
? 'post.adminuser') und I('post.adminpwd')){ $adminuser=I('post.adminuser'); $adminpwd=I('post.adminpwd');
//Konto merken $remember=I('post.remember' ); if(!empty($remember)) { cookie('remember',$remember,3600*24*30) ; cookie('loginname',$adminuser,3600*24*30 ); cookie('loginpwd',$adminpwd,3600*24*30); }else { cookie('remember', null); Cookie('loginname',null); Cookie ('loginpwd',null); } $auth=I('post.auth'); $verify = new ThinkVerify(); $res=$verify->check($ auth, ''); if($res==false) { $this->assign('error',' Der Verifizierungscode ist nicht korrekt! '); $this->display('index'); exit(); } $admin=new AdminModelAdminModel(); $res=$admin->where("adminname ='$adminuser'")->find(); if($res) { $status=$res['status']; if($status==0) {
$this->assign('error','Dieser Administrator wurde deaktiviert!');
$this->display('index');
exit();
}else {
$ passwort=$res['password'];
//MD5-Verschlüsselung
$pwd=$admin->encrypt($adminpwd);
if($password!=$pwd)
{
$ this ->assign('error','Benutzername oder Passwort ist falsch!');
$this->display('index');
exit();
}else {
//Beurteilen Sie, ob die Administratorgruppe ist deaktiviert
$group_id=$res['group_id'];
$AdminGroup=new AdminModelAdminGroupModel();
$res_g=$AdminGroup->where("id=$group_id")-> ; field('status')->find();
if($res_g['status']=='1')
{
//Anmeldestatus aktualisieren
$ip=getIP();
$login_num=$res['login_num']+1;
$data=array(
'last_login_time'=>date('Y-m-d H:i:s'),
'last_login_ip'=> $ ip,
'login_num'=> ($res2)
{
//Benutzersitzung speichern
$_SESSION['admin_id']=$res['uid'];
$_SESSION['a_group_id'] =$res['group_id'];
//Zur Seite springen
$this->redirect('System/index');
}else {
$this->assign('error',' Fehler bei der Anmeldung! ');
$this->display('index');
}
}else {
$this->assign('error','Die Administratorgruppe, in der Sie sich befinden, wurde deaktiviert!' ;
' Der Administrator existiert nicht! ');
$this->display('index');
}
}else {
$this->assign('error','Account Nummer und Passwort dürfen nicht leer sein! $_SESSION['admin_id ']=null;
S $ _Session ['a_group_id'] = null; = array( 'expire' => 1800, // Ablaufzeit des Bestätigungscodes (s) 'useImgBg' => false, // Hintergrundbilder verwenden 'fontsize' = & gt; 10, // CODE -Schriftgröße (PX) 'usecurve' = & gt; Anzahl der Ziffern 'fontttf' => '5.ttf', '5.ttf', //Verifizierungscode-Schriftart, zufällige Erfassung ohne Einstellung 'bg' => //Hintergrundfarbe) ; $verify=new ThinkVerify($config); /** * Den Verifizierungscode ausgeben und den Verifizierungscodewert in der Sitzung speichern * Das Format des in der Sitzung gespeicherten Verifizierungscodes ist: array('verify_code' => 'Verification code value', 'verify_time' => ; 'Zeitpunkt für die Erstellung des Bestätigungscodes'); **/ $verify->entry(); }}- ------- ------------------------------------------- ------- ------------------------------------------- ------- ------------------------------------------- ------- ---Der Code der zweiten Datei AdminController.class.php lautet wie folgt: ----------------------- ----------- ------------------------- ----------- -<?php/** *Administratorverwaltung*/namespace AdminController;use AdminCommonControllerAuthController;class AdminController erweitert AuthController { öffentliche Funktion index()
{ if( I('get.search')) { $search=I('get.search');
$where="adminname='$search' or email='$search' or phone='$search'";
}
if(I('get.group_id'))
{
$group_id =I('get.group_id');
$where="group_id='$group_id'";
}
if(I('get.group_name'))
{
$group_name=I( 'get.group_name');
$res_ag=D('AdminGroup')->where("title='$group_name'")->field('id')->find();
$group_id=$res_ag['id'];
$where="group_id='$group_id'";
}
if(I('get.search')=='' and I('get. group_id')=='' and I('get.group_name')=='')
{
$where='1';
}
$Admin=new AdminModelAdminModel();
$count =$Admin->where($where)->count();
$per = 15;
if($_GET['p'])
{
$p=$_GET['p '];
}else {
$p=1;
}
$Page= new ThinkPage($count,$per);// 实例化分页类 传入总记录数和每页显示的记录数(25)
$Page->rollPage=10; // 分页栏每页显示的页数
$Page -> setConfig('header','共%TOTAL_ROW%条');
$Page -> setConfig('first','首页');
$Page -> setConfig('last','共%TOTAL_PAGE%页');
$Page -> setConfig('prev','上一页');
$Page -> setConfig('next','下一页');
$Page -> setConfig('link','indexpagenumb');//pagenumb 会替换成页码
$Page -> setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% 第 '.I('p',1).' 页/共 %TOTAL_PAGE% 页 (<font color="red ">'.$per.'</font> 条/页 共 %TOTAL_ROW% 条)');
$show= $Page->show();// 分页显示输出
$ adminlist = $Admin->where($where)->page($p.','.$per)->select();
$this->assign('alist',$adminlist) ;// 赋值数据集
$this->assign('page',$show);
$this->display();
}
//新增管理员
öffentlich Funktion add()
{
//Liste der Administratorgruppen abrufen
$group=new AdminModelAdminGroupModel();
$grouplist=$group->getGroupList2();
$this->assign('glist',$grouplist);
if(I('post.'))
{
if(I('post.adminname'))
{
$adminname=I('post.adminname');
$Admin=new AdminModelAdminModel();
$res=$Admin->where("adminname='$adminname'")->find();
if($res)
{
$str='Xder Benutzername existiert bereits';
echo $str;
exit();
}else {
$str='';
$a='a';
}
}
if( I('post.password') und I('post.password2'))
{
$password=I('post.password');
$password2=I('post.password2') ;
if (strlen($password2)<=5)
{
$str='X Passwort ist nicht weniger als 6 Zeichen';
echo $str;
exit();
}else {
if($password!=$password2)
{
$str='XDie Passwörter unterscheiden sich zweimal';
echo $str;
exit();
}else {
$str= '' ;
$a.='a';
}
}
}
if(I('post.email'))
{
$email=I ('post.email' );
if(is_email($email))
{
$str='';
}else {
$str='X E-Mail-Format ist falsch';
echo $str;
beenden ();
}
}
if(I('post.phone'))
{
$phone=I('post.phone');
if(is_phone( $ phone))
{
$str='';
}else {
$str='X-Telefonnummernformat ist falsch';
echo $str;
exit();
}
// MD5-Verschlüsselung
$pwd=$Admin->encrypt($password2);
$email=I('post.email');
$phone=I('post.phone');
$group_id=I('post.group_id');
$status=I('post.status');
$register_time=date('Y-m-d H:i:s');
//php获取ip的算法
$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
$data=array(
'adminname'=>$adminname,
'password'=>$pwd,
'email'=>$email ,
'phone'=>$phone,
'province'=>trim(I('post.province')),
'city'=>trim(I('post.city') ),
'group_id'=>$group_id,
'status'=>$status,
'register_time'=>$register_time,
'register_ip'=>$ip,
'last_login_time '=>date('Y-m-d H:i:s')
);
$res=$Admin->add($data);
if($res)
{
echo '1 ';
}else {
echo '0';
}
}
}else {
$this->display();
}
}
//编辑管理员
public function edit($uid)
{
//获取管理员信息
$Admin=new AdminModelAdminModel();
$aMsg=$Admin->getAdminMsg($ uid);
$ this->assign('msg',$aMsg);
//获取管理员组列表
$group=D('admin_group');
$grouplist=$group->getGroupList2();
$this->assign('glist',$grouplist);
if(IS_POST)
{
//var_dump(I('post.'));exit;
if(I( 'post.adminname'))
{
$adminname=I('post.adminname');
$res=$Admin->where("adminname='$adminname' and uid!='$uid '")->find();
if($res)
{
$error='X该用户名已存在';
$this->assign('error',$error) :
{
if (is_email ($ mail)!
$this->display(); excit(); } }if(is_phone($phone)!==true)
{
$error2='X手机号码格式不正确';
$this->assign('error2',$error2);
$this ->display();
exit();
}
}
$group_id=I('post.group_id');
$login_num=I('post.login_num');
$ status=I('post.status');
$data=array(
'adminname'=>$adminname,
'email'=>$email,
'phone'=> $phone,
'province'=>trim(I('post.province')),
'city'=>trim(I('post.city')),
'group_id'=> ;$group_id,
'login_num'=>$login_num,
'status'=>$status,
);
if(I('post.password'))
{
$password =I('post.password');
//MD5加密
$pwd=$Admin->encrypt($password);
$data['password']=$pwd;
}
$res=$Admin->where("uid=$uid")->save($data);
if($res!==false)
{
layout(false);
$ this->success('编辑管理员成功!',U('index'),3);
}else {
layout(false);
$this->error('操作失败!' );
}
}else {
$this->display();
}
}
//修改管理员禁用状态
öffentliche Funktion changestatus($id,$status)
{
$data=array(
'status'=>$status
);
$Admin=new AdminModelAdminModel();
$res=$Admin->where("uid=$ id")->save($data);
if($res===false)
{
echo '0';
}else {
echo '1';
}
}
//Administrator löschen
öffentliche Funktion del($id)
{
$Admin=new AdminModelAdminModel();
$res=$Admin->where("uid=$id")- > ;delete();
if($res===false)
{
echo '0';
}else {
echo '1';
}
}
/ / Passwort ändern
Öffentliche Funktion changepwd()
{
if($_SESSION['admin_id']!='')
{
$admin_id=$_SESSION['admin_id'];
if(I ( 'post.'))
{
$oldpwd=I('post.oldpwd');
if($oldpwd=='')
{
$this->assign('error1' , 'Das ursprüngliche Passwort darf nicht leer sein!');
$this->display();
exit();
}
$pwd1=I('post.pwd1');
$pwd2= I('post.pwd2');
if($pwd1=='')
{
$this->assign('error2','Das neue Passwort darf nicht leer sein!');
$ this ->display();
exit();
}
if($pwd2=='')
{
$this->assign('error3','Passwort wiederholen darf nicht leer sein ! ');
$this->display();
exit();
}
if($pwd1==$pwd2)
{
if(strlen($pwd2)>5 )
{
//Überprüfen Sie, ob das ursprüngliche Passwort korrekt ist
$Admin=new AdminModelAdminModel();
$res=$Admin->checkPwd($admin_id,$oldpwd);
if($res )
{
//Passwort ändern
$newpwd=$Admin->encrypt($pwd2);
$data=array(
'password'=>$newpwd
);
$ res2=$ Admin->where("uid=$admin_id")->save($data);
layout(false);
if($res2===false)
{
$this -> Fehler('Passwort konnte nicht geändert werden! ');
}else {
$this->success('Passwort erfolgreich bearbeitet!');
}
}else {
$this->assign('error1','Das ursprüngliche Passwort ist falsch ! ');
$this->display();
exit();
}
}else {
$this->assign('error3','Das neue Passwort muss mindestens 5 Zeichen lang sein!');
$this->display();
exit();
}
}else {
$this->assign('error3','Die beiden Passwörter sind unterschiedlich!');
$this->display();
exit();
}
} else {
$this->display();
}
}else {
$this->redirect('Index/index');
}
}
}
-- ---- ---------------------------------------------- ---- ---------------------------------------------- ---- ---------------------------------------------- ---- ------
Die dritte Datei lautet wie folgt:
<?php
namespace AdminCommonController;
use ThinkController;
use ThinkAuth;
//Berechtigungsauthentifizierung
Klasse AuthController erweitert Controller {
protected function _initialize(){
//Wenn keine Sitzung vorhanden ist, ist kein direkter Zugriff zulässig
if(!$_SESSION['admin_id'])
{
layout(false) ;
$this-> ;error('Noch nicht angemeldet, springe zur Anmeldeseite',U('Index/index'));
}
//Wenn eine Sitzung vorhanden ist, ist keine Bestätigungsberechtigung erforderlich
$not_check = array (
'Admin/changepwd','System/index','System/index_show','System/cleancache','System/clearrubbish',//Passwort ändern, System-Homepage,
'ArticleCat/deloldimg',' Article/deloldimg','Article/deloldbigimg','Article/deloldfile',//Löschen Sie das Originalbild der Artikelkategorie, löschen Sie das Originalbild des Artikels, löschen Sie das ursprüngliche große Bild des Artikel, lösche die Originaldatei des Artikels
'GoodsCat/deloldimg',// lösche das Originalbild der Produktkategorie
);
//Anfrage für den aktuellen Vorgang Modulname/Methodenname
if (in_array(CONTROLLER_NAME.'/'.ACTION_NAME, $not_check))
{
return true; CONTROLLER_NAME.'/'.ACTION_NAME,$_SESSION['admin_id']) und $_SESSION['a_group_id' ]!='1')
{
layout(false);
echo 'Keine Erlaubnis!';die ();
$this->error('Keine Erlaubnis');
}
}
}
已经解决,谢谢